初心者として、私は通常の MySQL php 関数の使用を勧める PHP MySQL チュートリアルに従いました。ただし、PDO の方が優れていると言われたので、コードを 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
何故ですか?構文の何が問題なのかわかりません。私が読んでいるチュートリアルでは、「.$id.」ではなく bindValue または execute(array(stuff)) を使用してパラメーターを追加する必要があると書かれています。など、より安全なので、これは何らかの理由で機能しません。