如何在PHP PDO中成功执行查询?

Chu*_*utt 18 php mysql pdo

如何测试以查看以下查询是否成功执行?

$STH = $this->_db->prepare("UPDATE UserCreds SET
    VerificationString=:newVerificationString, ExpiryDate=:expiryDate 
    WHERE UserID = :userID;");
$STH->execute($params);
Run Code Online (Sandbox Code Playgroud)

我知道我可以lastInsertId()在添加新行时使用,但是UPDATE和SELECT呢?

Sar*_*raz 39

成功和失败的execute回报.truefalse

来自Docs:

成功时返回TRUE,失败时返回FALSE.


因此,您可以确保查询成功运行,如:

if ($STH->execute($params))
{
  // success
}
else
{
  // failure
}
Run Code Online (Sandbox Code Playgroud)

  • 非常适合检查(技术)成功.使用`rowCount()`检查`UPDATE`中是否有任何变化(`mysql`驱动程序也会告诉你`SELECT`中有多少行,但不应该依赖它). (7认同)

Mar*_*c B 16

execute()根据查询的成功/失败返回true/false:

$status = $STH->execute($params);

if ($status) {
   echo 'It worked!';
} else {
   echo 'It failed!';
}
Run Code Online (Sandbox Code Playgroud)

一个注意事项:没有返回任何行的选择查询不是失败的.这是一个完全有效的结果,恰好没有结果.


小智 6

只是我可以计算受影响的行数:

$stmt->execute();
$count = $stmt->rowCount();

if($count =='0'){
    echo "Failed !";
}
else{
    echo "Success !";
}
Run Code Online (Sandbox Code Playgroud)