如何在php中检查mysql查询的结果

时间:2014-01-13 17:22:29

标签: php mysql sql database forms

我有一个html表单供用户登录网站,但我想检查以下查询是否返回true或false,我正在使用PDO,所以我不能使用方法mysql_num_rows();

<?php


$view = new stdClass();
$view->login = 'Homepage';
if(isset($_POST['firstName']) && isset($_POST['password']) )
{
    $_firstName = $_POST['firstName'];
    $password= $_POST['password']; 
    $user = new UserPassword(); $user->getLogin($_firstName, $passWord);

}
require_once('Views/login.phtml');


  public function getLogin($userName,$passWord) {    

 $sqlQuerys = "SELECT `id`, `username`, `password`, `firstname`, `surename` FROM `sta177users` WHERE username = ' $userName' AND password = '$password'";
 echo $sqlQuerys;
 $statement = $this->_dbHandle->prepare($sqlQuerys);  
 $statement->execute();  
 }
}

4 个答案:

答案 0 :(得分:1)

您实际上并未执行任何查询。您正在设置变量,但不执行代码。

此外,通过使用外部变量构建SQL语句,您将对SQL注入攻击保持开放。此外,任何带有单引号的输入数据,如名称“O'Malley” ,会炸毁你的SQL查询。请了解如何使用参数化查询(最好使用PDO模块)来保护您的Web应用程序。我的网站http://bobby-tables.com/php有一些示例可以帮助您入门,this question有很多详细示例。

答案 1 :(得分:0)

您执行查询并获取一行。如果该获取的结果不为空,则表示您拥有有效的用户。

非常重要:您需要对密码进行加密和散列,并使用预准备语句来避免sql注入。

答案 2 :(得分:0)

尝试此解决方案

$query="SELECT `id`, `username`, `password`, `firstname`, `surename` FROM `sta177users` WHERE username = ' $_firstName' AND password = '$password'";
$query->execute();
$rows = $query->fetchColumn();

if($rows == 1){
return true;
}else{
return false;
}

答案 3 :(得分:0)

你想做这样的事情:     

function emptyQuery($db) // assume $db is your PDO object
{
    // your prepared sql statement with PDO::prepare()
    $sql = $db->prepare("SELECT `id`, 
        `username`, 
        `password`, 
        `firstname`, 
        `surename` 
    FROM 
        `sta177users` 
    WHERE 
        username = ' $_firstName' 
        AND password = '$password'
        ");
    // execute it with PDO::execute()
    $sql->execute();
    // return all the rows with PDO::fetchAll(), and then see if the array is empty().
    return empty($sql->fetchAll());
}
?>

这应该实现您的规范。您可以使用count()进行计数等。

当然,不要放弃文档: http://us2.php.net/pdo

希望有所帮助!