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 回答