【问题标题】:How to use a foreach loop to dynamically execute a mysql query?如何使用 foreach 循环动态执行 mysql 查询?
【发布时间】:2012-10-08 00:53:59
【问题描述】:

我正在做一个简单的数据库构建器函数,它接受一个问题 ID、4 个选项、一个 ID 和一个计数变量。

我要做的就是在 foreach 中,获取选项并对所有单独的选项变量执行 mysql_query()。如您所见,我已将它们放在一个数组中,因此我可以在 foreach 中循环它们。

我认为 $var 变量,即选项值正在处理错误。 mysql返回给我的错误是:

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以获取正确的语法,以便在 'option, order) VALUES ('e3397df9241278bfcad1945420398baa817acd7a', '005e913c9c1a' at line 1'附近使用第 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++;
}

非常感谢您能帮我看看哪里出了问题。干杯。

【问题讨论】:

    标签: php mysql arrays variables foreach


    【解决方案1】:

    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_ 函数已弃用。

    【讨论】:

    • 是的,救命稻草,不知道它们是关键字,谢谢,从现在开始我会记住关键字!再次感谢!
    • 另外,是的,我使用过 pod 和 mysqli,记住这一点,可能很快就会转换
    【解决方案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());
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-29
      • 2017-10-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多