【问题标题】:MySQL Query for ALL Comma Separated Values In String [duplicate]MySQL查询字符串中所有逗号分隔的值[重复]
【发布时间】:2020-04-21 22:57:29
【问题描述】:

我有一个简单的逗号分隔字符串,如下所示:

$thisusersfavorites = "12,13,34,65,11";

我有一个这样的简单查询:

"SELECT * FROM recipes WHERE id = '$thisusersfavorites' ORDER BY name ASC";

但结果只产生第一个 ID 结果,而不是其余的。

【问题讨论】:

    标签: php mysql sql csv where-clause


    【解决方案1】:

    在 MySQL 中,您可以使用 handy string function find_in_set() 在逗号分隔的字符串中搜索值:

    select * from recipes where find_in_set(id, ?) order by name
    

    请注意,我将您的语句重写为参数化查询,而不是在查询字符串中修改值。您确实希望使用这些来使您的代码更高效、更安全。

    另外,请记住,这是一种相当低效的方法。将您的列表拆分为单独的值会好得多,并使用in

    where id in (12, 13, 34, 65, 11)
    

    作为参数化查询:

    where id in (?, ?, ?, ?, ?)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-11-02
      • 1970-01-01
      相关资源
      最近更新 更多