gpt4 book ai didi

PHP 问题 : PDO Prepare() and Execute() with MYSQL IN() not working for arrays

转载 作者:行者123 更新时间:2023-11-29 00:55:07 25 4
gpt4 key购买 nike

我在 PHP 中使用 PDO 对象来运行 MYSQL 查询,我似乎在将 IN() 子句与 PDO::Prepare() 一起使用时遇到了问题。

用户输入:用逗号分隔的标签
例如)篮球,足球

我编写以下代码:

$query = 
"SELECT s.item_id, s.item_type, s.title
FROM search_all s
WHERE EXISTS (
SELECT t.item_id
FROM tags t
WHERE t.item_id = s.item_id AND t.item_type = s.item_type
AND t.tag IN (:tags)
)";

$mysql_vars[':tags'] = implode("','",explode(',',$tags));
$stmt = $connection->prepare($query);
$stmt->execute($vars);
$data = $stmt->fetchAll(PDO::FETCH_ASSOC);

据我了解,execute() 会将每个变量用双引号 (") 括起来,因此我在每个输入之间手动添加双引号,以模仿 sql,如下所示:

SELECT s.item_id, s.item_type, s.title
FROM search_all s
WHERE EXISTS (
SELECT t.item_id
FROM tags t
WHERE t.item_id = s.item_id AND t.item_type = s.item_type
AND t.tag IN ("basketball","football")
)

但是,这对我不起作用。有没有办法在使用 sql IN() 子句的同时仍然使用 PDO 的 prepare() 和 execute() ?

最佳答案

你需要做一些像 AND t.tag IN (:tag1, :tag2)

现在它认为您正在文本中查找 "basketball","football"

为此,您可以使用 PHP 的字符串追加和循环来创建查询生成器 :)

关于PHP 问题 : PDO Prepare() and Execute() with MYSQL IN() not working for arrays,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6444359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com