我在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));
答案 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);