此SQL IF语句有什么问题?

JLA

因此,我正在构建一个搜索脚本,并注意传递两个变量,但是首先,我想确保SQL QUery是正确的,因此我现在对变量进行硬编码。所以我的变量是

$comma_separated = "'Alberta','Ontario'";

这将传递给查询,如下所示:

$sql = "SELECT * FROM persons WHERE 1=1";



if ($firstname)
$sql .= " AND firstname='" . mysqli_real_escape_string($mysqli,$firstname) . "'";

if ($surname)
$sql .= " AND surname='" . mysqli_real_escape_string($mysqli,$surname) . "'";

if ($province)
$sql .= " AND province='" . mysqli_real_escape_string($mysqli,$comma_separated) . "' WHERE province IN ($comma_separated)";

$sql .= " ORDER BY surname";

然后当查询运行时,我收到此消息:

cannot run the query because: You have an error in your SQL syntax; check the manual that    corresponds to your MySQL server version for the right syntax to use near 'WHERE province IN ('Alberta','Ontario') ORDER BY surname LIMIT 0, 5' at line 1

但是对我而言,查询看起来正确,我在这里想念的是什么?

提前致谢。

迈克·布兰特(Mike Brant)

你不能WHERE在那里两次。您似乎还试图以两种不同的方式来筛选省值。基于$province将始终是值数组的假设(即使仅给出单个值),也可以尝试以下操作:

$sql = "SELECT * FROM persons WHERE 1=1";

if (!empty($firstname)) {
    $sql .= " AND firstname='" . mysqli_real_escape_string($mysqli,$firstname) . "'";
}

if (!empty($surname)) {
    $sql .= " AND surname='" . mysqli_real_escape_string($mysqli,$surname) . "'";
}

if (!empty($province)) {
    array_walk($province, function($value, $key_not_used) use ($mysqli) {
        return mysqli_real_escape_string($mysqli, $value);
    });
    $sql .= " AND province IN ('" . implode(',', $province) . "')";
}

$sql .= " ORDER BY surname";

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

此protobuffer解码有什么问题?

来自分类Dev

此CrossTab查询有什么问题?

来自分类Dev

SQL:此SQL查询有什么问题

来自分类Dev

此ANTLR语法有什么问题?条件语句嵌套括号

来自分类Dev

SAS Proc sql中的此代码有什么问题

来自分类Dev

此加密代码有什么问题?

来自分类Dev

此Verilog代码有什么问题?

来自分类Dev

此Ember.js把手if语句有什么问题?

来自分类Dev

此SQL Server存储过程有什么问题?

来自分类Dev

验证此代码有什么问题?

来自分类Dev

此INSERT INTO SELECT语句有什么问题?

来自分类Dev

此SQL语句有什么问题-错误

来自分类Dev

此SQL CREATE + INSERT批处理有什么问题?

来自分类Dev

此VBA代码有什么问题

来自分类Dev

此SQL查询有什么问题

来自分类Dev

此PHP代码中的SQL语法有什么问题?

来自分类Dev

此代码有什么问题?(Javascript)

来自分类Dev

此StringReplace代码有什么问题?

来自分类Dev

此SQL(使用IN的子查询)有什么问题?

来自分类Dev

此sql命令代码有什么问题?

来自分类Dev

使用条件选择列的此SQL语句有什么问题

来自分类Dev

此IF语句出了什么问题

来自分类Dev

此SQL查询有什么问题?

来自分类Dev

此SQL命令有什么问题?

来自分类Dev

此getGeneratedKeys()JDBC语句有什么问题?

来自分类Dev

My-SQL语句有什么问题?

来自分类Dev

使用SQL查询,此PHP代码有什么问题?

来自分类Dev

此INSERT INTO SELECT语句有什么问题?

来自分类Dev

此SQL查询有什么问题?