2012-03-01 23 views
15

Làm cách nào để kiểm tra xem truy vấn sau có được thực hiện thành công không?Làm thế nào để biết khi nào truy vấn được thực thi thành công trong PHP PDO?

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

Tôi biết tôi có thể sử dụng lastInsertId() khi tôi thêm hàng mới, nhưng những gì về bản cập nhật và lựa chọn?

+0

@Pekka Nope, tôi có thể nhận được thông báo lỗi tốt. –

+4

http://de.php.net/manual/en/pdostatement.execute.php nói: * Trả về TRUE khi thành công hoặc FALSE về lỗi. * - Vì vậy, hãy liên kết nó với một biến, ví dụ: '$ success = $ STH-> execute ($ params);' và kiểm tra biến đó với 'true' hoặc' false'. – Quasdunk

Trả lời

35

execute trả về true khi thành công và false về lỗi.

From Docs:

Returns TRUE về thành công hay FALSE trên thất bại.


Vì vậy, bạn có thể đảm bảo truy vấn chạy thành công như:

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

Vì vậy, một cái gì đó như 'if ($ STH-> thực hiện ($ params)) {echo" Thành công! "; } else {echo "Thất bại!"; } '? –

+0

@DjangoReinhardt: Có bạn đúng :) Bạn cũng có thể lưu trữ kết quả của 'execute' trong một biến nếu bạn cần sử dụng sau này. – Sarfraz

+0

Cảm ơn bạn đã làm rõ! –

15

thực hiện() trả về đúng/sai dựa trên thành công/thất bại của truy vấn:

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

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

Một lưu ý: truy vấn chọn trả về không có hàng nào KHÔNG phải là lỗi. Đó là một kết quả hoàn toàn hợp lệ mà chỉ xảy ra không có kết quả.

+3

+1 Ghi chú hữu ích, cảm ơn! –

-3

Đây là cách tốt nhất để xác minh thuyết truy vấn kết quả trở lại thành công hay thất bại kết quả và cùng cách theo trên đề nghị kiểm tra truy vấn thời tiết lợi nhuận Thành công trên ĐúngKhông trên sai.

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

chỉ đơn giản là tôi có thể đếm số lượng hàng thực hiện:

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

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

Điều này chỉ hoạt động khi sử dụng UPDATE –

+0

có điều này là dành cho CẬP NHẬT, hãy xem truy vấn được hỏi, có vẻ như UPDATE –

+1

Câu hỏi cụ thể nêu rõ: "CẬP NHẬT và CHỌN là gì?" –

Các vấn đề liên quan