【问题标题】:Create SQL from array从数组创建 SQL
【发布时间】:2016-06-24 13:38:03
【问题描述】:

我正在尝试创建一个 SQL 查询,根据数组包含的内容从我的数据库中获取数据。

例子:

我的数组包含1, 2, 3,那么查询应该是SELECT * FROM v WHERE category='1' OR category='2' OR category='3'

有谁知道实现这一目标的方法吗?

欢迎任何提示。

更新:

使用 MySQL 作为数据库。

【问题讨论】:

  • 请添加您使用的数据库产品(例如 MySQL)
  • 您没有根据给定的查询得到想要的结果吗?
  • @HamzaZafeer 查询应该可以工作。我只需要一些帮助从我的数组创建查询

标签: php mysql sql


【解决方案1】:

您可以使用implode 函数和IN 子句作为

$sql="SELECT * FROM v WHERE category IN ('".implode("','", $your_array)."')";

【讨论】:

    【解决方案2】:

    我会看一下https://stackoverflow.com/a/14767572/755949,它使用占位符和 PDO 将参数添加到您的查询中。使用 Saty 的答案,您可能会面临 SQL 注入的风险。

    【讨论】:

    • 我在我的 DB 类中使用 PDO。所有数据都经过清理
    • 仅供参考,我不知道您如何清理数据。如果您使用未经处理的数据连接 SQL 查询,并将该查询传递给 PDO,则 PDO 不会为您进行任何清理。
    • DB 类清理数据。
    【解决方案3】:
    $where = 'WHERE category="' . implode('" OR category="', $array) . '"';
    

    【讨论】:

      【解决方案4】:

      你也可以试试:

      $sql = "SELECT * FROM v WHERE ( FIND_IN_SET(".implode("','", $your_array).", category) ) ";
      

      有关 FIND_IN_SET 的更多信息:http://www.w3resource.com/mysql/string-functions/mysql-find_in_set-function.php

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-12-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-10-03
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多