2012-02-03 39 views
5

我是新來的Zend框架,我想知道我如何能得到受影響的行從這個數量:影響的行數的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)); 

我看了幾個帖子在這個論壇上,但是他們基於MySQLi和SELECT語句,您可以使用count()實際計算行數。

任何人都可以建議我如何改變這種支持rowCount

這是我如何連接到我的數據庫:

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

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

這是我Bootstrap.php。我這樣做是因爲我使用了多個數據庫。

回答

6

Zend_Db_Statement_Pdo有一個rowCount()方法。

API docs

返回受最後在執行INSERT,DELETE或UPDATE語句此Statement對象執行的行數。

這意味着您可以簡單地: -

$rowsAffected = $stmt->rowCount(); 

調用execute(),你應該得到受影響的行數後直。

+0

我剛剛編輯我的問題,包括數據庫連接。謝謝 – Sthe 2012-02-03 18:08:40

+1

我的解決方案應該爲你工作,因爲[Zend_Db_Statement_Pdo](http://framework.zend.com/apidoc/1.11/db_Db_Statement_Pdo.html#%5CZend_Db_Statement_Pdo)有一個rowCount()方法。 – vascowhite 2012-02-03 18:13:11

+0

謝謝。它確實有效。我試圖對錯誤的對象應用'rowCount()'。謝謝:-) – Sthe 2012-02-03 18:22:31