0

我已经使用 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())-check 我不确定它是否真的有必要。最佳实践是什么?

4

1 回答 1

1

根据文档“ http://php.net/pdostatement.rowcount ”,将行与 SELECT 语句一起使用是一种不好的做法,因为许多数据库无法返回受 SELECT 语句影响的行数。为了检查用户,最好使用:

选择 count(*) ..... 和 PDOStatement:execute + PDOStatement:fetchColumn。

还要记住(STH->execute()不检查任何内容,它只表示您的查询执行没有错误。

于 2013-07-20T14:40:30.463 回答