0

私は、質問ID、4つのオプションID、およびカウント変数を受け取る単純なデータベースビルダー関数を実行しています。

私がやりたいのは、foreachで、オプションを取得し、すべての個別のオプション変数に対してmysql_query()を実行することだけです。ご覧のとおり、foreachでループできるように、それらを配列に配置しました。

$ var変数、つまりオプション値がエラーを引き起こしていると思います。mysqlが私に返したエラーは次のとおりです。

SQL構文にエラーがあります。MySQLサーバーのバージョンに対応するマニュアルで、「option、order」の近くで使用する正しい構文を確認してください。VALUES('e3397df9241278bfcad1945420398baa817acd7a'、 '005e913c9c1a' at line 1

これが私のコードです:

$question_id = $_POST['question_id'];
$option1 = $_POST['option_1'];
$option2 = $_POST['option_2'];
$option3 = $_POST['option_3'];
$option4 = $_POST['option_4'];

$vars = array($option1, $option2, $option3, $option4);

$count = 1;
foreach ($vars as $var){

    $id = sha1(microtime());
    echo "ID: ".$id."<br/>Q ID: ".$question_id."<br/>Option: ".$var."<br/>Order: ".$count."<br/><br/>";

    $result = mysql_query("INSERT INTO question_options (id, question_id, option, order) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error());
    $count++;
}

何が悪いのか教えていただければ幸いです。乾杯。

4

2 に答える 2

4

OrderはMySQLキーワードです。あなたはそれを逃れる必要があります:

$result = mysql_query("INSERT INTO question_options (`id`, `question_id`, `option`, `order`) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error());

また、MySQLiまたはPDOを調べて、クエリをパラメータ化する必要があります。mysql_関数は非推奨になりました。

于 2012-10-08T00:58:44.007 に答える
2

用語optionorderはMySQLの特別な名前です。

代わりに、次のステートメントを使用してください。

$result = mysql_query("INSERT INTO question_options (id, question_id, `option`, `order`) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error());
于 2012-10-08T01:01:01.810 に答える