我有以下代码不起作用,我不明白为什么。
有人能帮我解决PDO的微妙之处吗?
<?php
$stmt = $con->prepare("SELECT DISTINCT title FROM articles WHERE concat(id,'-',value) IN (?)");
$stmt->bindParam(1, $concat);
//Works
$concat = "1-4";
$stmt->execute();
$results = $stmt->fetchAll();
var_dump($results);
//Does not work
$concat = "'1-4','1-5'";
$stmt->execute();
$results = $stmt->fetchAll();
var_dump($results);
谢谢:)
答案 0 :(得分:1)
绑定的值用作单个字符串参数。因此,当您第二次不提供列表时,您将提供一个内部有逗号的字符串。
如果您要“翻译”在数据库级别执行的查询,您将拥有:
SELECT DISTINCT title FROM articles WHERE concat(id, '-', value) IN ("1-4")
这是一个有效的SQL查询。但第二次你会有类似的东西:
SELECT DISTINCT title FROM articles WHERE concat(id, '-', value) IN ("'1-4', '1-5'")
由于没有连接等于列表中的唯一元素('1-4','1-5'),您将无法获得任何结果