查询适用于mysql终端,但不适用于php

时间:2014-07-24 22:43:56

标签: php mysql sql

我在PHP中动态构建我的查询,当我尝试执行它时,它失败了。当我复制它生成的查询并将其粘贴到mysql终端并运行它时,它工作正常。我得到的错误是#34;您的SQL语法中有错误;查看与您的MySQL服务器版本对应的手册,以便在'>'附近使用正确的语法。在第1行"对于以下查询:

UPDATE events SET event = 'orgo lecture', start = '2014-07-24 16:00:00' WHERE userID = 1 AND eventID = 5

以下是用于动态生成查询的代码:

$query = "UPDATE events SET ";
$query_list = array();
if ($set_event) {

    $query_list[] = "event = '{$event}'";

}
if ($set_start) {

    $query_list[] = "start = '{$start}'";

}
if ($set_end) {

    $query_list[] = "end = '{$end}'";

}
$query_list_size = count($query_list);
for ($i = 0; $i < $query_list_size - 1; $i++) {

    $query .= $query_list[$i];
    $query .= ", ";

}
$query .= $query_list[$query_list_size - 1];
$query .= " WHERE userID = {$userID} AND eventID = {$eventID}";
echo $query .= "<br />";
$query_result = mysqli_query($connection, $query) or die(mysqli_error($connection));

2 个答案:

答案 0 :(得分:1)

echo $query .= "<br />";指令正在更改查询并使其成为无效的SQL。为什么不使用echo $query . "<br />";

答案 1 :(得分:1)

这个问题是:

echo $query .= "<br />";

应该是

echo $query . "<br />";

具有讽刺意味的是,通过检查您的查询,您正在打破它。

作为旁注,

$query_list_size = count($query_list);
for ($i = 0; $i < $query_list_size - 1; $i++) {

   $query .= $query_list[$i];
   $query .= ", ";

}
$query .= $query_list[$query_list_size - 1];

可缩短为:

 $query .= implode(", ", $query_list);