2011-12-02 13 views
11

Con php/mysql come posso ottenere il numero di righe interessate da una query?PHP/mysql ottiene il numero di righe interessate dell'istruzione UPDATE

quello che ho provato finora:

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

ma dice che Warning: mysql_num_rows(): argomento fornito non è una valida MySQL resource risultato

+3

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

+0

@AllisonC si dovrebbe post che come una risposta .. :) – SERPRO

+0

L'avviso indica che la query ha avuto esito negativo anziché utilizzare la funzione errata. Dovresti implementare la corretta gestione degli errori. –

risposta

15

se si utilizza PDO (che vorrei raccomandare), per una query diretta exec() restituisce il numero di righe interessate. per Prepared Statements esiste un metodo chiamato rowCount().

se si utilizza the mysql-functions, c'è mysql_affected_rows().

EDIT:
sembra che si sta utilizzando il mysql-funzioni. mysql_num_rows, che è quello che stai utilizzando, restituisce la lunghezza del set di risultati (per esempio-istruzioni SELECT). quello che devi usare è mysql_affected_rows (come già detto).

+1

grazie per aver indicato il metodo corrispondente per le dichiarazioni preparate! – Igor

+1

** Avviso ** Questa estensione è stata dichiarata obsoleta in PHP 5.5.0 ed è stata rimossa in PHP 7.0.0 [riferimento] (http://de2.php.net/manual/en/function.mysql-affected-rows .php # function.mysql-affected-rows-refsynopsisdiv) – Ale

5

ha bisogno di voi mysql_affected_rows

+0

grazie, ma anche in questo caso ottengo questo errore: Avviso: mysql_affected_rows(): l'argomento fornito non è una risorsa MySQL-Link valida – clamp

+1

È necessario fornire 'mysql_affected_rows' con l'identificativo della connessione, non il record del risultato, come scritto su http: //php.net/manual/en/function.mysql-affected-rows.php – Pateman

+0

** Warning ** Questa estensione è stata dichiarata obsoleta in PHP 5.5.0 ed è stata rimossa in PHP 7.0.0 [riferimento] (http: //de2.php.net/manual/en/function.mysql-affected-rows.php#function.mysql-affected-rows-refsynopsisdiv) – Ale

2

morsetto,

è necessario fornire una risorsa -mysql_affected_rows, non un record di risultato. Vedi i collegamenti che gli altri hanno pubblicato per ulteriori informazioni.

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

Si consiglia inoltre di utilizzare una funzione ROW_COUNT(), ad es. -

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

dal riferimento - ROW_COUNT() restituisce il numero di righe cambiato, cancellato, o inserita da l'ultima istruzione se fosse un UPDATE, DELETE o INSERT ...

0

Whe può anche farlo utilizzando DOP:

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

$ sql deve essere sostituito dalla propria richiesta – nekiala

Problemi correlati