mysql - 获取 MySQL 中受影响的行数

标签 mysql pdo load-data-infile

尝试获取受影响的行返回 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`);";

同样:https://stackoverflow.com/a/52370701/9632001

关于mysql - 获取 MySQL 中受影响的行数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52338732/

相关文章:

php - 我想将多个图像添加到 MySQL 数据库中

php - mysql - 子查询返回多于 1 行错误

php - 使用 header 和 echo 从 PHP 显示图像

php - 使用php pdo向数据库中插入记录

sas - 带有标题的 sas 中的 infile .csv 文件

mysql - 如何将 CSV 文件导入 MySQL 表?

php - 如何使用唯一的随机序列号更新我的 MySQL 表列?

分配 64 字节时 PHP PDO 允许内存耗尽

mysql - 哪个是快速加载数据 infile 或正常插入?

mysql - 如何将 CSV 文件导入 MySQL 表?