如何使用foreach循环动态执行mysql查询?

时间:2012-10-08 00:54:00

标签: php mysql arrays variables foreach

我正在做一个简单的数据库构建器函数,它接受一个问题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++;
}

真的很感激,如果你能告诉我什么是错的。欢呼声。

2 个答案:

答案 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)

术语optionorder是MySQL的特殊名称。

请改用以下语句:

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