-1
MySQLテーブルを更新したいとします。数値を入力するとIDが入力されますが、代わりに変数を使用すると機能しません。mysqlクエリIDが変数として機能しない
私がしようとしているのは、HTMLテーブルの要素を列で並べ替えることです。
4列:
$colname = array("Column1", "Column2", "Column3", "Column4");
私はすでにURL変数からソートされた要素のIDを取得する:
$strTaskIds = $_GET["taskIds"];
// for example: $strTaskIds = "3;1;32_4;5_6;36_34;7"
は、今私は、2D-配列に文字列を分割し、MySQLのテーブルを更新します。
$arrTaskIds = explode("_", $strTaskIds);
for($i = 0; $i < count($arrTaskIds); $i++) {
$arrIdsPerCol = explode(";", $arrTaskIds[$i]);
for($j = 0; $j < count($arrIdsPerCol); $j++) {
$sql = "UPDATE tasks SET col='$colname[$i]', rank=$j WHERE id=$arrIdsPerCol[$j]";
}
if($conW->query($sql) === TRUE) {
$error = 0;
} else {
$error = 1;
}
}
変数$arrIdsPerCol[$j]
の代わりに番号EG 7
を書くと、それは機能します。
書き込み(int)$arrIdsPerCol[$j]
は動作しません。
[リトルボビーは](http://bobby-tables.com/)**([スクリプトがSQLインジェクション攻撃のリスクがある]と言うhttp://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php)**。 [MySQLi](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)の[Prepared Statements](http://en.wikipedia.org/wiki/Prepared_statement)について学んでください。 ** [文字列をエスケープする](http://stackoverflow.com/questions/5741187/sql-injection-that-gets-around-mysql-real-escape-string)**でも安全ではありません! – GrumpyCrouton