使用PDOStatement绑定数据?

时间:2013-12-01 10:14:13

标签: php mysql pdo

请帮助我,我不能在PDOStatement中使用bindValue()。

        $statement = self::$dbConn->prepare("SELECT  * FROM :tableDB WHERE id = :id");
        $statement->bindValue(":id", $id, PDO::PARAM_INT);
        $statement->bindValue(":tableDB", $tableDB, PDO::PARAM_STR);
        $statement->execute();
        $statement->setFetchMode(PDO::FETCH_ASSOC);
        $result = $statement->fetchAll();

当我运行此脚本时。

        $statement = self::$dbConn->prepare("SELECT  * FROM :tableDB WHERE id = :id");
        $statement->bindValue(":id", $id, PDO::PARAM_INT); // Return true
        $statement->bindValue(":tableDB", $tableDB, PDO::PARAM_STR); // Return true

但是当跑到:

$statement->execute(); // Return false.

1 个答案:

答案 0 :(得分:1)

你是绑定表名。你不能这样做。

直接在查询中使用表名,如下所示:

$statement = self::$dbConn->prepare("SELECT  * FROM table_name WHERE id = :id");
$statement->bindValue(":id", $id, PDO::PARAM_INT);
// $statement->bindValue(":tableDB", $tableDB, PDO::PARAM_STR); <-- Remove this line

更新:替换查询以使用表名而不是变量。