Mysql 计算从上一个SQL查询插入的行数
我有一个疑问:Mysql 计算从上一个SQL查询插入的行数,mysql,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 它向“发件箱”表插入多行。但我不知道插入了多少行。如何从该SQL语法插入行数?谢谢 更新 由于此命令,我获得了“-1”:
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
它向“发件箱”表插入多行。但我不知道插入了多少行。如何从该SQL语法插入行数?谢谢
更新
由于此命令,我获得了“-1”:
$insertedRows = mysql_query("SELECT ROW_COUNT()");
$rowInserted = mysql_fetch_array($insertedRows);
$rowInserted = $rowInserted[0];
echo $rowInserted;
但我看到我的桌子上插了27行。我做错了什么?把这句话写在你最后的陈述中
SELECT ROW_COUNT();
更新1
例如,使用如何
<?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());
?>
以下是一些可能性: »如果您有一个
AUTO_INCREMENT
列,则可以在插入之前和之后获取行号
»SELECT ROW_COUNT()
返回上一条语句更改、删除或插入的行数(如果它是更新
,删除
,或插入
()
»您可以使用mysqli\u受影响的行数
(因为mysql\u受影响的行数
函数正在被弃用)来获取以前的mysql操作中受影响的行数()
我刚刚尝试使用ROW_COUNT()函数,但结果是-1。事实上,我已经插入了27行。请参阅上面我对这篇文章的更新。@RobertHanson哦,我看到您正在使用
PHP
,请尝试使用mysql\u-infected\u-rows()
,如本PHP手册所示,@RobertHanson欢迎您!哦,顺便说一下,下次使用PDO
或MySQLI
,因为您当前的代码易受sql注入的攻击。明白了吗兄弟。。。我有一个计划,在一切完成后重写我的代码。谢谢。之所以“SELECT ROW_COUNT()”对您不起作用,是因为当PHP将控件返回给您时,您的查询不再是最新的查询。Mysql返回-1,因为PHP已经调用了“SELECT ROW\u COUNT()”和“SELECT LAST\u INSERT\u ID()”。选择信息函数后,“ROW_COUNT()”的结果为-1。这就是为什么需要使用特殊的PHP变量“mysql\u impacted\u rows”,它在执行查询后缓存了“SELECT ROW\u COUNT()”中的值。
$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));