【发布时间】:2017-05-09 03:58:43
【问题描述】:
这是我的代码:
$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 数组可能是一个空数组。
【问题讨论】:
-
您需要发布语法错误。代码还有其他问题,例如
execute需要一个平面数组,而不是矩阵。 -
您在一个数组中发送一个数组。尝试先将
$selected_tags_arr与其他变量合并到一个数组中。 -
IN (list)臭名昭著很难在除、gasp、ColdFusion 之外的所有语言中参数化。
标签: php mysql pdo parameter-passing