2012-09-27 12 views
6

Molti ho questa query:Conte Come righe inserite Da ultimo SQL Query

INSERT INTO db1.outbox (DestinationNumber, TextDecoded) 
SELECT User.CellPhone, '$SMSMessage' as TextDecoded 
FROM db2.User 
WHERE User.PurchaseDate BETWEEN 2012-01-01 AND 2012-01-31 

lo fa inserimento più righe alla tabella 'in uscita'. ma non so quante file sono state inserite. come avere il numero di righe inserite da quella sintassi SQL? Grazie.

aggiornamento I got '-1', come risultato di questo comando:

$insertedRows = mysql_query("SELECT ROW_COUNT()"); 
$rowInserted = mysql_fetch_array($insertedRows); 
$rowInserted = $rowInserted[0]; 
echo $rowInserted; 

ma vedo che ci sono 27 righe inserite sul mio tavolo. che cosa ho fatto di sbagliato?

+0

il motivo "SELECT ROW_COUNT()" non funziona per voi è t la tua query non è più la query più recente quando PHP ti restituisce il controllo. Mysql restituisce -1 perché PHP ha già invocato "SELECT ROW_COUNT()" e "SELECT LAST_INSERT_ID()". Dopo aver selezionato una funzione di informazione, il risultato di "ROW_COUNT()" è -1. Ecco perché è stato necessario utilizzare la variabile PHP speciale '' 'mysql_affected_rows' '', che memorizzava nella cache il valore di "SELECT ROW_COUNT()" dopo l'esecuzione della query. –

risposta

9

mettere questo sulla vostra ultima dichiarazione;

SELECT ROW_COUNT(); 

UPDATE 1

come circa usando mysql_affected_rows, esempio

<?php 

    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password'); 
    if (!$link) 
    { 
     die('Could not connect: ' . mysql_error()); 
    } 
    mysql_select_db('mydb'); 

    /* this should return the correct numbers of deleted records */ 
    mysql_query('you SQL QUERY HERE'); 
    printf("Records deleted: %d\n", mysql_affected_rows()); 

?> 
+0

Ho appena provato a utilizzare la funzione ROW_COUNT(), ma mi dà -1 come risultato. infatti, ho inserito 27 righe. vedi il mio aggiornamento di questo post qui sopra. –

+1

@RobertHanson oh vedo che stai usando 'PHP', prova a usare' mysql_affected_rows() 'come visto su questo manuale PHP, http://php.net/manual/en/function.mysql-affected-rows.php –

+0

@RobertHanson vedere la mia risposta aggiornata. –

1

Ecco alcune possibilità:

» Se si dispone di una colonna AUTO_INCREMENT, è possibile recuperare il numero della riga prima e dopo inserto

» SELECT ROW_COUNT() restituisce il numero di righe cambiato, cancellato, o inserita dall'ultima dichiarazione se fosse un UPDATE, DELETE, o INSERT (doc)

» È possibile utilizzare mysqli_affected_rows (dal mysql_ funzioni vengono deprecati) per ottenere il numero di righe interessate in una precedente operazione MySQL (doc)

$link = mysqli_connect("localhost", "my_user", "my_password", "world"); 

if (!$link) { 
    printf("Can't connect to localhost. Error: %s\n", mysqli_connect_error()); 
    exit(); 
} 

/* Insert rows */ 
mysqli_query($link, "INSERT INTO myTable VALUES (1)"); 
printf("Affected rows (INSERT): %d\n", mysqli_affected_rows($link)); 
Problemi correlati