【问题标题】:SQL IN Operator ERROR when array is empty数组为空时的 SQL IN 运算符错误
【发布时间】:2014-05-08 01:58:04
【问题描述】:

SQL 操作符


我使用 IN 运算符是因为我在我的 SQL 语句中使用数组。

例如:

$city[1] = "'Paris'";
$city[2] = "'London'";
$cityString= implode(", ", $city);

SELECT * FROM Customers
WHERE City IN ($cityString);

但在我的代码中,我使用了 GET 或 POST 数组的值。但是当数组为空时没有值,所以我的 SQL 语句将不起作用。如果没有 if 语句并有数千条 SQL 语句的列表,我如何解决这个问题。

【问题讨论】:

  • if 语句到底有什么问题? :S
  • 如果没有要比较的城市列表(至少一个),则 SQL 查询毫无意义。为了避免致命错误,您可能有一个虚拟的、不可能的城市名称(例如,“12345”),它应该返回 0 条记录。
  • @Tularis:因为它不是我想要使用的唯一数组,如果我为每个数组都做一个 if 语句,那会很复杂
  • @Phil Perry:我想要所有的记录,而不是返回 0 条记录。
  • 你也可以把它变成一个函数,或者把它放在一个循环中,循环遍历你的所有记录/数组/任何东西,动态地将它们添加到你的结果查询中?完全跳过空的搜索参数(这样可以加快查询速度!)

标签: php sql sql-in


【解决方案1】:

你可以检查数组是否为空:

if(!empty($city)) {
    $query = "SELECT * FROM Customers WHERE City IN ($cityString)";
    $result = mysql_query($query);

} else {
    // .. do something else ?
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多