2012-10-08 82 views
0

我正在做一个简单的数据库构建器函数,它带有一个问题ID,4个选项是一个ID和一个计数变量。如何使用foreach循环动态执行mysql查询?

我想要做的就是在foreach中,对所有单独的选项变量进行选项并执行mysql_query()。正如你所看到的,我把它们放在一个数组中,这样我就可以在foreach中循环它们。

我认为$ var变量,即选项值是夹住错误。错误mysql回报给我的是:

您的SQL语法有错误;检查对应于你的MySQL服务器版本在1号线

使用近“选项,顺序)VALUES(” e3397df9241278bfcad1945420398baa817acd7a”,‘005e913c9c1a’我的继承人代码正确的语法手册:

$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

秩序是一个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_函数已弃用。

+0

是,救生员,没有线索,他们的关键字,谢谢,我会继续关键字的前提下,从现在开始!再次感谢! – cwiggo

+0

加,是的,我已经使用pod和mysqli,记住它,并可能很快转换 – cwiggo

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());