我正在尝试以我认为正确的方式绑定参数,但是我从 MySQL 收到 1064 错误,表明涉及的引号太多。编写的代码如下所示:
$db_host = 'localhost';
$db_username = 'root';
$db_password = 'Password123';
$db_database = 'db_test';
$dbh = new PDO("mysql:host=$db_host", $db_username, $db_password);
$stmt = $dbh->prepare("DROP DATABASE :db_database;");
$stmt->bindParam(':db_database', $db_database, PDO::PARAM_STR, 7);
$stmt->execute() or exit(print_r($stmt->errorInfo(), true));
并显示错误消息:
Array ( [0] => 42000 [1] => 1064 [2] => 您的 SQL 语法有错误;请查看与您的 MySQL 服务器版本相对应的手册,了解在 ''db_test'' 附近使用的正确语法在第 1 行)
当我以错误的方式插入变量时,它工作正常$db_database
,即直接插入到 sql 语法中。另外,我检查了 magic_quotes 是否已关闭,如果这对它有任何影响。现在我被卡住了,因为感觉我做的事情正确(但显然我没有)。任何人都可以看到错误吗?