我正在做一个简单的数据库构建器函数,它接受一个问题id,4个选项,一个id和一个count变量。
我想做的就是在foreach中,选择并在所有单独的选项变量上执行mysql_query()。正如你所看到的,我把它们放在一个数组中,所以我可以在foreach中循环它们。
我认为$ var变量即选项值正在丢失错误。 mysql的错误告诉我:
您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以便在“选项,订购”附近使用正确的语法VALUES('e3397df9241278bfcad1945420398baa817acd7a','005e913c9c1a'在第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++;
}
真的很感激,如果你能告诉我什么是错的。欢呼声。
答案 0 :(得分: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_
函数。
答案 1 :(得分:2)
术语option
和order
是MySQL的特殊名称。
请改用以下语句:
$result = mysql_query("INSERT INTO question_options (id, question_id, `option`, `order`) VALUES ('$id', '$question_id', '$var', '$count') ") or die(mysql_error());