尝试获取受影响的行返回 0 文件包含 250k 记录:
$affectedRows = 0;
$affectedRows = $pdo->exec(
"DELETE FROM tablename WHERE Col3 BETWEEN '2018-01-01 00:00:00' AND '2018-01-31 00:00:00';
ALTER TABLE tablename AUTO_INCREMENT = 1;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE tablename
FIELDS TERMINATED BY ','
LINES TERMINATED BY ' ' ( `Col1`, `Col2`, `Col3`)");
echo var_dump($affectedRows);
存储 CSV 但返回 0
最佳答案
解决方法:
完全支持此脚本:
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE tablename
FIELDS TERMINATED BY ','
LINES TERMINATED BY ' ' ( `Col1`, `Col2`, `Col3`)
但是我将它与其他查询合并起来,如下所示:
DELETE FROM tablename WHERE date BETWEEN '$Date1' AND '$Date2';
ALTER TABLE tbalename AUTO_INCREMENT = 1;
LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE tablename
FIELDS TERMINATED BY ','
LINES TERMINATED BY ' ' ( `Col1`, `Col2`, `Col3`);
这是错误的,因为$PDO->exec()
无法返回受影响的表或行的数量。
相反,为了解决我需要过去的数组,因为我的脚本支持它:
$stmtpre[1] = "DELETE FROM tablename WHERE date BETWEEN '$Date1' AND '$Date2';";
$stmtpre[2] = "ALTER TABLE tbalename AUTO_INCREMENT = 1;";
$stmtpre[3] = "LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE tablename
FIELDS TERMINATED BY ','
LINES TERMINATED BY ' ' ( `Col1`, `Col2`, `Col3`);";
关于mysql - 获取 MySQL 中受影响的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52338732/