PDO预处理语句返回空数组

时间:2014-02-04 15:18:35

标签: php mysql pdo statements

这将返回一个空数组:

$query_string = "select * from :table where id=1";
$args = array(":table" => "pages");
$result = $db->Query($query_string, $args);

这将从数据库中提取并返回数据:

$query_string = "select * from pages where id=1";
$result = $db->Query($query_string);

查询方法:

public function Query($query, $arguments = null) {
    $pdo_query = $this->Connection->prepare($query);
    $pdo_query->execute($arguments);
    if($pdo_query) {
        return $pdo_query->fetchAll();
    }
}

我浏览了样本和文档 - 我的语法似乎很好。为什么第一个代码示例返回空数组?

谢谢!

2 个答案:

答案 0 :(得分:4)

您无法将表名绑定到PDO参数。参数仅适用于比较或赋值的操作数。

答案 1 :(得分:2)

如上所述,您无法将表名绑定到参数,您应该像这样更改代码

$query_string = "select * from pages where id=:id";
$args = array(":id" => "1"); //the : is not necessary but as it is a non-documented feature I would always set it
$result = $db->Query($query_string, $args);