2013-07-20 42 views
0

我一直在使用PDO的时间已经很长一段时间了,但我想知道我是否检查错误太多或者不够。这是我的东西,一般的外观:PHP PDO工作流程

$STH = $DBH->prepare("SELECT something FROM table WHERE field=:field AND field2=:field2"); 
$STH->bindParam(":field",$field); 
$STH->bindParam(":field2",$field2); 
if($STH->execute()){ 
    if($STH->rowCount() == 1){ 
     echo "This is what is returned"; 
    }else{ 
     echo "Something went wrong."; 
    } 
}else{ 
    echo "Something went wrong."; 
} 

当然的$STH->rowCount() -check要看什么我期待。例如,当用户登录时,只能使用该用户名找到一个结果。当然,这已经在数据库中检查过了,但我再次在这里再次检查它。这是否需要?

另外if(STH->execute()) - 检查我不确定是否真的有必要。什么是最佳实践?

回答

1

根据文档'http://php.net/pdostatement.rowcount',在SELECT语句中使用rowcount是一种糟糕的做法,因为许多数据库无法返回受SELECT语句影响的行数。对于检查用户,最好使用:

选择计数(*).....和PDOStatement:执行+ PDOStatement:fetchColumn。

还要记住(STH->的execute()不检查任何它只是说,你的查询没有错误执行。