计算从上次SQL查询插入的行数

时间:2012-09-27 14:32:48

标签: mysql

我有这个问题:

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

它会在'outbox'表中插入多行。但我不知道插入了多少行。如何从该SQL语法中插入行数?感谢。

更新 由于这个命令,我得到'-1':

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

但我看到我的桌子上插入了27行。我做错了什么?

2 个答案:

答案 0 :(得分:10)

把它放在你最后的陈述上;

SELECT ROW_COUNT();

更新1

如何使用 mysql_affected_rows ,例如

<?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());

?>

答案 1 :(得分:1)

以下是一些可能性:

»如果您有AUTO_INCREMENT列,则可以在插入

之前和之后获取行号

»SELECT ROW_COUNT()返回最后一个语句更改,删除或插入的行数,如果它是UPDATEDELETEINSERT({{3} }})

»您可以使用mysqli_affected_rows(因为mysql_函数被弃用)来获取先前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));