2012-03-01 331 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

相關問題