2012-09-27 51 views
6

tengo esta consulta:contar el número de filas insertadas desde la última consulta SQL

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 hace la inserción de varias filas a la tabla 'saliente'. pero no sé cuántas filas insertaron. ¿Cómo se inserta el número de filas desde esa sintaxis SQL? Gracias.

actualización Tengo '-1' como resultado de este comando:

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

pero veo que hay 27 filas insertadas en mi mesa. ¿qué hice mal?

+0

la razón "SELECT ROW_COUNT()" no funciona para usted es t si su consulta ya no es la consulta más reciente cuando PHP le devuelve el control. Mysql devuelve -1 porque PHP ya ha invocado "SELECT ROW_COUNT()" y "SELECT LAST_INSERT_ID()". Después de seleccionar una función de información, el resultado de "ROW_COUNT()" es -1. Es por eso que necesitó usar la variable especial de PHP '' 'mysql_affected_rows' '', que almacenó en caché el valor de "SELECT ROW_COUNT()" después de ejecutar su consulta. –

Respuesta

9

pon esto en tu última declaración;

SELECT ROW_COUNT(); 

ACTUALIZA 1

cómo sobre el uso de mysql_affected_rows, ejemplo

<?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

Traté de usar la función ROW_COUNT(), pero me da -1 como resultado. de hecho, tengo 27 filas insertadas. ver mi actualización de esta publicación arriba. –

+1

@RobertHanson oh veo que estás usando 'PHP', intenta usar' mysql_affected_rows() 'como se ve en este manual de PHP, http://php.net/manual/en/function.mysql-affected-rows.php –

+0

@RobertHanson vea mi respuesta actualizada. –

1

Estas son algunas posibilidades:

» Si usted tiene una columna AUTO_INCREMENT, se puede recuperar el número de fila antes y después de la inserción

» SELECT ROW_COUNT() devuelve el número de filas cambiadas, se elimina o se inserta por la última declaración si fue un UPDATE, DELETE o INSERT (doc)

» Puede utilizar mysqli_affected_rows (desde mysql_ funciones están siendo obsoleto) para obtener el número de filas afectadas en una operación 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)); 
Cuestiones relacionadas