PDO为mysql_num_rows准备了等效语句

时间:2012-11-04 02:26:11

标签: php mysql pdo

我希望这个问题看起来并不模糊,但是我将旧的mysql语句转换为PDO预处理语句并且我已经搜索但找不到答案。 PDO中$count=mysql_num_rows($stmt);的等价物是什么?我已经包含了我的代码,所以你可以看到我在做什么,但基本上我正在为用户创建一个登录页面我有一个使用SELECT的PDO语句在数据库中搜索匹配的用户名和密码行。如果它出现一个,那么它会将$count变量增加到一个,以便我的IF声明为真。

CHECK_LOGIN.PHP

<?php
require 'functions.php';
require 'DB.php';
ob_start();

// Define $myusername and $mypassword 
$myusername=$_POST['myusername']; 
$mypassword =$_POST['mypassword'];
$mypassword = md5($_POST['mypassword']);

checkLogin($conn,$myusername,$mypassword,$stmt);

// Mysql_num_row is counting table row
$count=mysql_num_rows($stmt);

// If result matched $myusername and $mypassword, table row must be 1 row
if($count==1){

// Register $myusername, $mypassword and redirect to file "login_success.php"
    session_start();
    $_SESSION['myusername'] = $myusername;
    session_is_registered("myusername");
    session_is_registered("mypassword"); 
    $myusername1 = $_SESSION['myusername'];
    //UPDATE LAST LOGIN IN DATABASE
    date_default_timezone_set('America/Chicago');
    $last_login = date('m/d/Y h:i:s a', time());
    lastLogin($conn,$myusername1,$last_login);
    header("location:form.php");


}
else {

echo "Wrong Username or Password";

}
ob_end_flush();
?>

在FUNCTION.PHP中的功能

function checkLogin($conn,$myusername,$mypassword,$stmt){

$myusername = stripslashes($myusername);
$myusername = mysql_real_escape_string($myusername);
$stmt = $conn->prepare('SELECT * FROM `CLL_users` WHERE `user_name`=:myusername AND `password`=:mypassword');
$stmt->execute(array(':myusername' => $myusername, ':mypassword' => $mypassword));
}

1 个答案:

答案 0 :(得分:4)

从这里检查示例#2:PDOStatement::rowCount

  

对于大多数数据库,PDOStatement :: rowCount()不返回受SELECT语句影响的行数。相反,使用PDO :: query()发出带有与预期SELECT语句相同的谓词的SELECT COUNT(*)语句,然后使用PDOStatement :: fetchColumn()来检索将返回的行数。然后,您的应用程序可以执行正确的操作。

相关问题