gpt4 book ai didi

php - 当有其他占位符时,如何在 IN() 子句中使用占位符?

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

这是我的代码:

$selected_tags_arr = ["PHP", "CSS", "JAVA"];
$part_of_tag = "MyS";
$in = str_repeat('?,', count($selected_tags_arr) - 1) . '?';
$stmt = $dbh_conn->prepare("SELECT name, usage_guidance, total_used_num
FROM tags
WHERE
( name LIKE CONCAT('%', ?, '%') OR
usage_guidance LIKE CONCAT(?, '%') ) AND
name NOT IN ($in)");
$stmt->execute(array($part_of_tag, $part_of_tag, $selected_tags_arr));
$result = $stmt->fetchAll();

由于语法错误,它不起作用。我该如何解决?

如您所见,我还有一些其他参数($selected_tags_arr 数组除外) 需要传递给它们。这就是问题发生的时候。

注意:有时$selected_tags_arr数组可能是一个空数组。

最佳答案

好的,因为没有人愿意提供示例。就像 aynber 说的,你需要合并数组。所以下面的代码应该没问题:

$stmt->execute(array_merge([$part_of_tag,$part_of_tag], $selected_tags_arr));

但是,如果像您所说的那样,$selected_tags_arr 可能为空,则可能会出现问题。它会导致语法错误。

补救措施取决于您想要的结果。如果您希望查询在数组为空时什么也找不到,请像这样更改您的代码:

$in  = $selected_tags_arr ? str_repeat('?,', count($selected_tags_arr) - 1) . '?' : 'NULL';

关于php - 当有其他占位符时,如何在 IN() 子句中使用占位符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41301552/

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