2012-02-03 23 views
5

Soy nuevo en Zend Framework y me gustaría saber cómo puedo obtener el número de filas afectadas de esta:Número de filas afectadas 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)); 

vi unos pocos puestos en este foro, pero se basan en las sentencias MySQLi y SELECT, donde puedes contar las filas usando count().

¿Alguien puede sugerir cómo puedo modificar esto para admitir rowCount.

Así es como me conecto a mi base de datos:

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

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

Esto está en mi Bootstrap.php. Lo hice de esta manera porque trabajo con más de una base de datos.

Respuesta

6

Zend_Db_Statement_Pdo tiene un método rowCount().

Véase el API docs

Devuelve el número de filas afectadas por la ejecución del último INSERT, DELETE o UPDATE ejecutada por este objeto comunicado.

Esto significa que basta con: -

$rowsAffected = $stmt->rowCount(); 

recto después de llamar a execute() y usted debe obtener el número de filas afectadas.

+0

Acabo de editar mi pregunta para incluir una conexión de base de datos. Gracias – Sthe

+1

Mi solución debería funcionar para usted, ya que [Zend_Db_Statement_Pdo] (http://framework.zend.com/apidoc/1.11/db_Db_Statement_Pdo.html#%5CZend_Db_Statement_Pdo) tiene un método rowCount(). – vascowhite

+0

Gracias. Funciona. Intenté aplicar 'rowCount()' en el objeto equivocado. Gracias :-) – Sthe

Cuestiones relacionadas