try {
$STH = $DBH->query("SELECT id FROM users WHERE full_name = :username");
$STH->bindParam(':username', $username);
$nameExists = $STH->rowCount();
if ($nameExists != 0) {
$error .= "That username already exists<br>";
}
}
catch(PDOException $e) {
$error .= $e->getMessage() . "<br>";
}
以上是我正在使用的代码。 $ username之前定义。此代码的问题是我收到以下错误:
SQLSTATE [42000]:语法错误或访问冲突:1064您有 SQL语法错误;查看与您的手册相对应的手册 MySQL服务器版本,用于在':username'附近使用正确的语法 第1行
当我将代码更改为包含'around:username so ...
时$STH = $DBH->query("SELECT id FROM users WHERE full_name = ':username'");
语句执行正常,但在应该的时候不匹配记录。当我删除占位符并只写WHERE full_name ='John Doe'时一切正常。
任何帮助解决这个问题都非常感激。
答案 0 :(得分:2)
$STH = $DBH->prepare("SELECT id FROM users WHERE full_name = :username");
$STH->execute(array(':username'=>$username));
使用bindParam:
$STH = $DBH->prepare("SELECT id FROM users WHERE full_name = :username");
$STH->bindParam(':username', $username, PDO::PARAM_STR);
$STH->execute();