特定の MySQL クエリを PDO の名前のないプレースホルダーで動作させようとしましたが、問題は 3 番目のクエスチョン マークの周りにある ' ' に関係していると思われますが、それを理解することはできません。
例外が発生します:「無効なパラメーター番号: バインドされた変数の数がトークンの数と一致しません」
関数の関連部分、try-catch などは、読みやすくするために削除されています。関数は、PDO-MySQL に変更する前の以前の純粋な MySQL コードで正常に機能した単純な英数字文字列を含む $column および $mytype で呼び出されるため、問題ないはずです。
define('SQL_TABLE', 'mytable');
function listThem($column, $mytype) {
# These lines succeed
$databaseHandle = new PDO('mysql:host=' . SQL_HOST . ';dbname=' . SQL_DATABASE, SQL_USER, SQL_PASSWORD);
$databaseHandle->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
# The following three lines cast the exception
$input = array(SQL_TABLE, $column, $mytype);
$statementHandle = $databaseHandle->prepare('SELECT *, ((100 * likes) / (dislikes + 1)) '
. "AS rating FROM ? WHERE ? REGEXP '?' ORDER BY rating DESC;");
$statementHandle->execute($input);
# . . . more code here
}