0

PHP を使用して MySQL データベースの複数のフィールドを更新しようとしています。変数は、Ajax を使用して HTML フォームから渡されます。何らかの理由でクエリが失敗しているように見え、その理由がわかりません。

変数が正しく渡されていることを確認しましたが、すべて問題ないので、SQL クエリに問題があると思います。私は細かい歯の櫛でそれを調べてみましたが、私の人生では何が悪いのか分かりません! 私はおそらく明らかな何かを見逃していることを知っていますが、誰かが私を助けることができますか?

ありがとう!

PHPコードは次のとおりです。

<?php

//Connect to database
include_once('../../dbconnect.php');

//Retrieve Variables from AJAX call
$name = $_POST['name'];
$size = $_POST['changesize'];
$delivery = $_POST['changedelivery'];
$venue = $_POST['changevenue'];
$level = $_POST['changelevel'];
$modules = $_REQUEST['changemodules'];
$insertmodules = json_decode(stripslashes($modules), true);

//Update database using variables
mysql_query ("UPDATE users SET level=$level, size=$size, delivery=$delivery, venue=$venue, mod1=$insertmodules[0], mod2=$insertmodules[1], mod3=$insertmodules[2], mod4=$insertmodules[3], mod5=$insertmodules[4], mod6=$insertmodules[5], mod7=$insertmodules[6], mod8=$insertmodules[7], mod9=$insertmodules[8], mod10=$insertmodules[9] WHERE name=$name") 
 or die (mysql_error);

//Return Data
echo "Course updated for $name";

?>
4

2 に答える 2

2

mysql_error()定数ではなく関数です。中括弧を追加して、何が起こっているかを確認してください。

ほとんどの場合、値を適切にフォーマットしていません。

たとえば、文字列の場合、両方を行う必要があります

  • 引用符で囲みます
  • これらの引用符を内部でエスケープします

あなたがどちらもしていない間。

数値の場合、適切な型に明示的にキャストする必要があります。

于 2013-02-08T10:30:24.347 に答える
1

たとえば、$_POST['changelevel'] に文字列が含まれている場合は、引用符を使用する必要があります。そして、このルールをすべての変数に実装する必要があります。

UPDATE users
SET level='$level', size='$size', delivery='$delivery', venue='$venue', mod1=$insertmodules[0], mod2=$insertmodules[1], mod3=$insertmodules[2], mod4=$insertmodules[3], mod5=$insertmodules[4], mod6=$insertmodules[5], mod7=$insertmodules[6], mod8=$insertmodules[7], mod9=$insertmodules[8], mod10=$insertmodules[9] 
WHERE name=$name")

引用符なしでの使用は、整数値でのみ許可されています。

于 2013-02-08T10:30:38.167 に答える