使用 MySQL 进行 PDO 的 IN 语句优化
将值数组绑定到 PDO 语句以便在 MySQL 中的 IN 语句中使用时,确保正确分隔这些值非常重要。但是,默认情况下,PDO 将 IN 语句视为单个字符串,这可能会导致错误的结果。
解决方案在于手动构造查询,如上一个问题中所述。然而,这不是一个理想的解决方案,特别是对于具有可变大小列表的动态查询。
替代解决方案:
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE find_in_set(CAST(products.id AS CHAR), :products)
这是此类函数的示例:
CREATE FUNCTION split_str(s TEXT, delim CHAR) RETURNS SET<CHAR> BEGIN RETURN (SELECT explode(s, delim) X FROM DUAL); END
然后,您可以在您的query:
SELECT users.id FROM users JOIN products ON products.user_id = users.id WHERE products.id IN (SELECT X FROM split_str(:products, ','))
这些替代解决方案使您可以更有效地使用 MySQL 处理 PDO 中的 IN 语句,确保结果准确和最佳表演。
以上是如何优化具有大型值列表的 MySQL 的 PDO IN 语句?的详细内容。更多信息请关注PHP中文网其他相关文章!