Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 如何获取“中插入行的计数”;插入“忽略stament”;_Mysql - Fatal编程技术网

Mysql 如何获取“中插入行的计数”;插入“忽略stament”;

Mysql 如何获取“中插入行的计数”;插入“忽略stament”;,mysql,Mysql,我正在使用insert“ignore语句”进行批量插入,并在数据库中插入50万个令牌。在50万个代币中,可以有重复的代币。 因此,如果我使用insert ignore语句在数据库中插入50万个令牌,则无法保证所有令牌都会因为重复的令牌而插入数据库 在插入之后,我想知道有多少令牌被插入到数据库中。一些人建议使用受影响的行列来获取插入(受影响)行的计数。但受影响的_行不会给出当前sql语句的输出,而是给出最后一条sql语句的输出 请告诉我使用insert ignore语句获取插入行数的最佳方法。Pu

我正在使用insert
“ignore语句”
进行批量插入,并在数据库中插入50万个令牌。在50万个代币中,可以有重复的代币。 因此,如果我使用insert ignore语句在数据库中插入50万个令牌,则无法保证所有令牌都会因为重复的令牌而插入数据库

在插入之后,我想知道有多少令牌被插入到数据库中。一些人建议使用
受影响的行
列来获取插入(受影响)行的计数。但受影响的_行不会给出当前sql语句的输出,而是给出最后一条sql语句的输出

请告诉我使用insert ignore语句获取插入行数的最佳方法。

Put
select row_count()
紧跟在
insert
语句之后,以获取插入的行数

例如:


执行一次SQL插入忽略操作可以处理受影响的_行。不确定这将如何证明性能明智,因为它的0.5百万行进入

无论如何,这里有一个我尝试过的解决方案,在单插入中使用4个值

<?php 
$mysqli = new mysqli('127.0.0.1','root','','test');

if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$sql = "INSERT IGNORE INTO test1 (Name, Attribute, Val) VALUES ('ai', 'blue', '1j'),('ai1', 'white', '2j'),('ai2', 'black', '3j'),('ai1', 'green', '4j')";
$insert = $mysqli->query($sql);
printf ($mysqli->affected_rows);
?>

您使用的是50万条INSERT语句,还是1条值为50万的INSERT语句?1条INSERT语句有50万行…如果在“printf($mysqli->受影响的_行)”语句之前执行另一个进程(请求)的另一个INSERT语句,那么它将给出此INSERT的计数,而不是您在示例中提到的计数。
<?php 
$mysqli = new mysqli('127.0.0.1','root','','test');

if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}

$sql = "INSERT IGNORE INTO test1 (Name, Attribute, Val) VALUES ('ai', 'blue', '1j'),('ai1', 'white', '2j'),('ai2', 'black', '3j'),('ai1', 'green', '4j')";
$insert = $mysqli->query($sql);
printf ($mysqli->affected_rows);
?>