作为一个新手,我遵循了建议使用常规 MySQL php 函数的 PHP MySQL 教程。但是,由于有人告诉我 PDO 是更好的选择,我一直在将我的代码转换为它。我刚刚遇到以下问题:
$query = $uspdb->prepare("SELECT post_id, is_approved, reports FROM ? WHERE id=? AND ?");
$query->bindValue(1, $table, PDO::PARAM_INT);
$query->bindValue(2, $id, PDO::PARAM_INT);
$query->bindValue(3, checkPermission("comment_moderation"),PDO::PARAM_BOOL);
$query->execute;
$result = $query->fetch(PDO::FETCH_ASSOC);
第一行抛出以下 PDO 异常:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '? WHERE id=? AND ?' at line 1
这是为什么?我不知道语法可能有什么问题。我正在阅读的教程告诉我应该使用 bindValue 或 execute(array(stuff)) 添加参数,而不是“.$id”。等等,因为它更安全,但无论出于何种原因,这都不起作用。