2012-03-01 291 views
15

如何测试以查看以下查询是否成功执行?如何判断查询在PHP PDO中成功执行?

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

我知道我可以使用lastInsertId()当我加入新行,但什么有关更新并选择?

+0

@Pekka不,我可以得到错误信息就好了。 – 2012-03-01 17:47:11

+4

http://de.php.net/manual/en/pdostatement.execute.php说:*成功返回TRUE或失败时返回FALSE。* - 将其绑定到变量,例如: '$ success = $ STH-> execute($ params);'并检查该变量是否为true或false。 – Quasdunk 2012-03-01 17:47:26

回答

35

execute返回true成功,false失败。

From Docs:

成功返回TRUE或FALSE的失败。


所以你可以确保查询成功运行,如:

if ($STH->execute($params)) 
{ 
    // success 
} 
else 
{ 
    // failure 
} 
+0

所以像'if($ STH-> execute($ params)){echo“Success!”; }其他{回声“失败!”; ''? – 2012-03-01 17:48:35

+0

@DjangoReinhardt:是的你说得对:)如果你以后需要使用,你也可以将'execute'的结果存储在一个变量中。 – Sarfraz 2012-03-01 17:49:24

+0

感谢您的澄清! – 2012-03-01 17:52:06

15

的execute()返回查询的真/假基于成功/失败:

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

if ($status) { 
    echo 'It worked!'; 
} else { 
    echo 'It failed!'; 
} 

一注意:不返回行的select查询不是失败。这是一个非常有效的结果,恰好没有结果。

+3

+1有用的笔记,谢谢! – 2012-03-01 17:50:06

-3

这是最好的方式来验证学说查询结果返回的成功或失败 结果,并同样按照上面的建议检查天气查询 回报成功的真正失败虚假

public static function removeStudent($teacher_id){ 
     $q = Doctrine_Query::create() 
      ->delete('Student s') 
      ->where('s.teacher_id = ?'); 

     $result = $q->execute(array($teacher_id)); 

     if($result) 
     { 
     echo "success"; 
     }else{ 
     echo "failed"; 
     } 
    } 
1

只是我可以指望实现行号:

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

if($count =='0'){ 
    echo "Failed !"; 
} 
else{ 
    echo "Success !"; 
} 
+0

这只适用于使用更新 – 2017-02-21 17:33:44

+0

是的这是用于更新,查看询问,看起来关于更新 – 2017-02-22 05:24:35

+1

这个问题明确指出:“什么关于更新和选择? – 2017-02-22 10:50:30

相关问题