現在、次の挿入クエリを使用して、php を使用して mysql の値を更新しています。
$UpdateQuery = "UPDATE `mysqldb`.`cu_data` SET
`app_status` = '".$_POST['Est']."',
`nacionalidad` = '".$_POST['Nac']."',
`ciudad_ini` = '".$_POST['CiudadI']."',
`ciudad_ent` = '".$_POST['CiudadE']."',
`ciudad_dest` = '".$_POST['CiudadD']."',
`ciudad_land` = '".$_POST['PEntrada']."',
`uso_consr` = '".$_POST['U_Abog']."',
`start` = '".$_POST['Envi']."',
`t1` = '".$_POST['Cob']."',
`t2` = '".$_POST['Acus']."',
`t3` = '".$_POST['Invit']."',
`t4` = '".$_POST['Entre']."',
`t5` = '".$_POST['Recibo']."',
`t6` = '".$_POST['EnvioF)']."',
`t7` = '".$_POST['DatInternet']."',
`t8` = '".$_POST['SoliMed']."',
`t9` = '".$_POST['OrdeMe']."',
`t10` = '".$_POST['SoliciPasa']."',
`t11` = '".$_POST['EnvioPasas']."',
`t12` = '".$_POST['RecepPasa']."',
`end` = '".$_POST['Landing']."',
`Notas` = '".$_POST['Notas']."',
`LastChange` = NOW()
WHERE `cu_data`.`procid` = '".$_POST['Proceso']."' AND
`cu_data`.`userid` = '$userid'
";
$result = mysqli_query($con, $UpdateQuery);
コードは機能していますが、SQL インジェクションが心配です (悪い種類だけでなく、フォーム フィールドのいずれかにセミコロンを含むユーザーのようなものも)
私は mysql_real_escape_string を使用してある種のエスケープを使用することを考えていました (この質問に対する 2 番目の最も投票された回答で示唆されているように)、コメントにいくつかの落とし穴があります (そして、最も投票されたものを理解するのに苦労しています)。
任意のヒント?
前もって感謝します
Ps: 少なくとも最後のフィールド (notas) については、ユーザーが ($ # % ; : ,.> などの記号を入力する必要があります)
編集:
提案された回答を見ました(元の質問の別のSO回答に悪いようでした)。重複しないように、上記のような更新クエリに対して PDO を実行する方法についての手がかりを求めてもよろしいですか? (私の php は mysql_ の時代のものです!)
編集済み (2): この質問には重複のフラグが付けられていますが、選択した回答には同意しません (この質問の後に表示される回答には既に回答があります:この質問をする前に読んだものです) 。ここで、(少なくとも私にとっては) もっと興味深い別のものを見つけました: mysql_* 関数を PDO と準備済みステートメントで置き換える(もちろん、これは、PHP データ オブジェクト、別名 PDO を認識すると意味を成し始めます。ではなかった
編集済み(3):まあ、私はこれを次のように機能させました:
$UpdateQuery1 = "UPDATE `mysqldb`.`cu_data` SET
`app_status` = ?,
`nacionalidad` = ?,
`ciudad_ini` = ?,
`ciudad_ent` = ?,
`ciudad_dest` = ?,
`ciudad_land` = ?,
`uso_consr` = ?,
`start` = ?,
`t1` = ?,
`t2` = ?,
`t3` = ?,
`t4` = ?,
`t5` = ?,
`t6` = ?,
`t7` = ?,
`t8` = ?,
`t9` = ?,
`t10` = ?,
`t11` = ?,
`t12` = ?,
`end` = ?,
`Notas` = ?,
`LastChange` = NOW()
WHERE `cu_data`.`procid` = ? AND
`cu_data`.`userid` = ?";
$stmt = $con->prepare($UpdateQuery1);
$stmt->bind_param('ssssssssssssssssssssssss',
$_POST['Estatus'],$_POST['Nacionalidad'],$_POST['CiudadI'],$_POST['CiudadE'],$_POST['CiudadD'],
$_POST['PEntrada'],$_POST['Uso_Abog'],$_POST['Envi'],$_POST['Cobro_de_Fee'],
$_POST['Acus'],$_POST['Invit'],$_POST['Entre'],$_POST['Recibo'],$_POST['EnvioF'],
$_POST['DatInternet'],$_POST['SoliMed'],$_POST['OrdeMe'],$_POST['SoliciPasa'],
$_POST['EnvioPasa'],$_POST['RecepPasa'],$_POST['Landing'],$_POST['Notas'],
$_POST['Proceso'],$userid);
$stmt->execute();
おまけとして、私のフィールド Notas は、特殊文字をエスケープすることなく、任意のテキストを保持できるようです