请帮助我,我不能在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.
答案 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
更新:替换查询以使用表名而不是变量。