Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 计算从上一个SQL查询插入的行数_Mysql - Fatal编程技术网

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