如何将此mysql转换为PDO?我在尝试获取代码以验证用户名是否已存在时遇到问题。
//Check if user already exists
$u_check = mysql_query("SELECT username FROM users WHERE username='$un'");
//Count the amount of rows where username = $un
$check = mysql_num_rows($u_check);
if ($check == 0) {
答案 0 :(得分:3)
您可能希望使用prepared statement
执行此操作$u_check = $pdo->prepare("SELECT username FROM users WHERE username= :username");
$u_check->execute(array(':username' => $un));
if($u_check->rowCount()) {
答案 1 :(得分:1)
我同意Machavity关于准备好的声明:
$u_check = $pdo->prepare("SELECT username FROM users WHERE username= :username");
$u_check->execute(array(':username' => $un));
但是对于所选行的便携式计数 ,您应该更喜欢:
$rows=$u_check->fetchAll();
if(count($rows)) {...
有关使用rowCount()
进行选择查询的限制的详细信息,请参阅http://php.net/manual/en/pdostatement.rowcount.php(可移植性问题,取决于基础数据库)。
答案 2 :(得分:0)
始终使用正确的类型定义绑定PDO中的参数,以避免PDO预测类型过程。避免尽可能使用数组执行,因为这意味着预测PDO过程。
在获取之前使用PDO rowCount(比其他任何东西都快)。
$u_check = "SELECT username FROM users WHERE username=?"
$stmt = $pdo->prepare($u_check);
$stmt->bindParam(1, $un, PDO::PARAM_STR);
$stmt->execute();
$count = $stmt->rowCount();
if($count>=1){
$result= $stmt->fetchall(PDO::FETCH_ASSOC);
}