2011-06-30 26 views
11

Tôi không chắc liệu câu hỏi này là WordPress cụ thể hay có liên quan nhiều hơn đến mySQL. Tôi đang cố gắng tìm hiểu những gì sẽ được trả lại nếu giao dịch với cơ sở dữ liệu không thành công. Trong trường hợp sau, tôi đang cập nhật một hàng. Nếu không có giá trị nào được thay đổi, false sẽ được trả về. Nếu thay đổi được thực hiện đúng là trả về. Làm cách nào tôi có thể biết liệu giao dịch có bị lỗi không?

$result = $wpdb->update($this->table_name, $dbfields, $where); 
if($result == false)//do fail - this is not really a fail! 
if($result == true)//do success 

Bất kỳ con trỏ nào được đánh giá cao.

Trả lời

32

Hãy xem trong wp-includes\wp-db.php. Các ý kiến ​​tiêu đề của chức năng cập nhật wpdb cho biết:

* @return int|false The number of rows updated, or false on error. 

Vì vậy, tôi muốn nghi ngờ rằng bạn muốn tìm sự khác biệt giữa false (một giá trị boolean chỉ ra một sự thất bại) và 0 (một số nguyên chỉ ra rằng không có hàng bị trả lại .)

Nếu bạn so sánh sử dụng ==, false0 bằng nhau. Do đó, bạn cần sử dụng toán tử === để kiểm tra xem bạn có đang xử lý boolean false hoặc số nguyên 0 hay không.

Vì vậy, hãy thử các:

if ($result === false) // Fail -- the "===" operator compares type as well as value 
if ($result === 0) // Success, but no rows were updated 
if ($result > 0) // Success, and updates were done. $result is the number of affected rows. 

Xem the PHP manual để biết thêm thông tin về === toán tử so sánh.

+0

câu trả lời rất hay. Cảm ơn bạn – wordpresrox

+0

Có cách nào chúng tôi có thể nhận thêm thông tin về nguyên nhân gây ra lỗi, mô tả lỗi không? – RaffAl

+0

@Bearwithit Thử kiểm tra '$ wpdb-> last_error'. Đó là biến công khai (chuỗi) cần có mô tả về lỗi cuối cùng. –

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