2011-12-02 9 views
11

Con php/mysql ¿cómo puedo obtener el número de filas afectadas por una consulta?PHP/mysql obtiene el número de filas afectadas de la instrucción UPDATE

lo que he intentado hasta ahora:

$result = mysql_query($q); 
mysql_num_rows($result); 

pero dice que Warning: mysql_num_rows(): argumento proporcionado no es válido MySQL resultado de recursos

+3

http://php.net/manual/en/function.mysql-affected-rows.php – AllisonC

+0

@AllisonC que usted debe enviar como respuesta .. :) – SERPRO

+0

La advertencia indica que la consulta falló en lugar de que está utilizando la función incorrecta. Debe implementar un manejo de errores adecuado. –

Respuesta

15

si está utilizando PDO (que yo recomendaría), para una consulta directa exec() devuelve el número de filas afectadas. para Prepared Statements hay un método llamado rowCount().

si está usando the mysql-functions, hay mysql_affected_rows().

EDIT:
parece como si estuviera usando las funciones de MySQL. mysql_num_rows, que es lo que estás usando, devuelve la longitud de tu conjunto de resultados (para las declaraciones SELECT por ejemplo). lo que necesita usar es mysql_affected_rows (como ya se dijo).

+1

¡gracias por indicar el método correspondiente para las Declaraciones preparadas! – Igor

+1

** Advertencia ** Esta extensión se desaprobó en PHP 5.5.0 y se eliminó en PHP 7.0.0 [referencia] (http://de2.php.net/manual/en/function.mysql-affected-rows .php # function.mysql-affected-rows-refsynopsisdiv) – Ale

5

te necesita mysql_affected_rows

+0

gracias, pero incluso entonces me sale este error: Advertencia: mysql_affected_rows(): argumento suministrado no es un recurso válido de MySQL-Link – clamp

+1

Debe proporcionar 'mysql_affected_rows' con el identificador de conexión, no el registro de resultados, como está escrito en http: //php.net/manual/en/function.mysql-affected-rows.php – Pateman

+0

** Advertencia ** Esta extensión fue desaprobada en PHP 5.5.0, y fue eliminada en PHP 7.0.0 [referencia] (http: //de2.php.net/manual/en/function.mysql-affected-rows.php#function.mysql-affected-rows-refsynopsisdiv) – Ale

2

pinza,

Debe suministrar un recurso -mysql_affected_rows, no un registro de resultados. Vea los enlaces que otros publicaron para obtener información adicional.

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
$result = mysql_query($q); 
echo mysql_affected_rows($link); 
6

También es posible que desee utilizar una función ROW_COUNT(), p. Ej. -

UPDATE table1 SET column1 = 100 WHERE column2 = 10; 
SELECT ROW_COUNT(); 

De la referencia - ROW_COUNT() devuelve el número de filas cambiadas, eliminado o insertado por el último estado de cuenta si era un UPDATE, DELETE o INSERT ...

0

Whe también puede hacerlo con DOP:

$db = new PDO('', '', '')// your connection 
$sql = "UPDATE tb_table SET rowname = value WHERE rowid = 1"; 
$query = $db->query($sql); 
echo $query; 
+0

$ sql debe ser reemplazado por su propia solicitud – nekiala

Cuestiones relacionadas