2012-02-03 33 views
5

Tôi mới đến Zend Framework và tôi muốn biết làm thế nào tôi có thể nhận được số hàng bị ảnh hưởng từ này:Số hàng bị ảnh hưởng Zend DB (UPDATE)

$sql = "UPDATE auth SET act='', status='1' WHERE username = ? AND act = ? "; 
$stmt = $this->dbh->prepare($sql); 
$stmt->execute(array($this->username, $this->key)); 

tôi thấy một vài bài viết trên diễn đàn này, nhưng chúng tôi dựa trên các câu lệnh MySQLi và SELECT nơi bạn thực sự có thể đếm các hàng bằng cách sử dụng count().

Bất kỳ ai cũng có thể đề xuất cách tôi có thể thay đổi điều này để hỗ trợ rowCount.

Đây là cách tôi kết nối với cơ sở dữ liệu của tôi:

$parameters = array(
    'host' => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'dbname' => 'users' 
); 

try { 
     $db = Zend_Db::factory('Pdo_Mysql', $parameters); 
... 

Đây là trong Bootstrap.php tôi. Tôi đã làm theo cách này bởi vì tôi làm việc với nhiều cơ sở dữ liệu.

Trả lời

6

Zend_Db_Statement_Pdo có phương thức rowCount().

Xem API docs

Trả về số hàng bị ảnh hưởng bởi việc thực hiện INSERT ngoái, DELETE, hoặc câu lệnh UPDATE được thực hiện bởi đối tượng tuyên bố này.

Điều này có nghĩa bạn có thể chỉ đơn giản là: -

$rowsAffected = $stmt->rowCount(); 

Straight sau khi gọi thực hiện() và bạn sẽ nhận được số hàng bị ảnh hưởng.

+0

Tôi vừa chỉnh sửa câu hỏi của mình để bao gồm kết nối DB. Cảm ơn bạn – Sthe

+1

Giải pháp của tôi sẽ phù hợp với bạn như [Zend_Db_Statement_Pdo] (http://framework.zend.com/apidoc/1.11/db_Db_Statement_Pdo.html#%5CZend_Db_Statement_Pdo) có phương thức rowCount(). – vascowhite

+0

Cảm ơn. Nó hoạt động. Tôi đã cố gắng áp dụng 'rowCount()' trên đối tượng sai. Cảm ơn bạn :-) – Sthe

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