PHP - 使用concat时PDO问题

时间:2014-01-10 10:14:43

标签: php pdo

我有以下代码不起作用,我不明白为什么。

有人能帮我解决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);

谢谢:)

1 个答案:

答案 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'),您将无法获得任何结果