2009-05-22 31 views
6

Ai đó có thể cho tôi ví dụ về cách xóa một hàng trong mysql với khung công tác Zend khi tôi có hai điều kiện?Ví dụ về tình trạng đa Xóa với khung công tác Zend

ví dụ: (cố gắng để làm điều này)

"DELETE FROM messages WHERE message_id = 1 AND user_id = 2" 

Mã của tôi (có nghĩa là thất bại thảm hại trông như thế này)

// is this our message? 
$condition = array(
        'message_id = ' => $messageId, 
        'profile_id = ' => $userId 
); 

$n = $db->delete('messages', $condition); 

Trả lời

8

Thay vì một mảng kết hợp, bạn nên chỉ được đi qua trong một mảng các biểu thức tiêu chí, ala:

$condition = array(
    'message_id = ' . $messageId, 
    'profile_id = ' . $userId 
); 

(và đảm bảo bạn thoát khỏi các giá trị đó phù hợp ely nếu họ đang đến từ người dùng nhập vào)

+0

này sẽ đi ra như: "DELETE FROM điệp ĐÂU message_id = 1 AND user_id = 2" hoặc "DELETE FROM điệp WHERE (message_id = 1) VÀ (user_id = 2)? – MichaelICE

+0

Đầu tiên tôi tin – xenon

+0

Nếu tôi đọc nguồn chính xác, nó sẽ thực sự đặt dấu ngoặc đơn xung quanh mỗi ... /library/Zend/Db/Adapter/Abstract.php, _whereExpr (dòng 564 hoặc hơn ...) –

29

Tốt hơn để sử dụng này:

$condition = array(
    'message_id = ?' => $messageId, 
    'profile_id = ?' => $userId 
); 

Các biểu tượng giữ chỗ() được thay thế bằng các giá trị, thoát khỏi nhân vật đặc biệt, và áp dụng dấu ngoặc kép quanh nó.

-3

Sử dụng này, nó đang làm việc ...

$data = array(
    'bannerimage'=>$bannerimage 
); 

$where = $table->getAdapter()->quoteInto('id = ?', 5); 

$table->update($data, $where); 
+0

Sao chép/dán không phải là câu trả lời hay làm – Andrew

+0

Đặc biệt khi câu trả lời hiển thị "cập nhật" thay vì "xóa". –

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