这是我的代码:
$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
数组可能是一个空数组。
答案 0 :(得分:2)
好的,因为没有人愿意提供一个例子。就像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';