简体   繁体   English

获取MySQL中受影响的行数

[英]Get number of affected rows in MySQL

trying to get the affected row return 0 file contain 250k records: 尝试获取受影响的行,返回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);

Store the CSV but Return 0 存储CSV但返回0

Solved with: 解决:

This script is full suported: 该脚本已被完全支持:

LOAD DATA LOCAL INFILE 'file.csv' INTO TABLE tablename 
FIELDS TERMINATED BY ',' 
LINES TERMINATED BY ' ' ( `Col1`, `Col2`, `Col3`)

But i merge it with other in some Query Like that: 但是我将其与其他查询合并,例如:

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

this is wrong, becouse $PDO->exec() Cant return the number of affected table or rows. 这是错误的,因为$PDO->exec()无法返回受影响的表或行的数量。

Instead of it, to solve i need past an array, becouse my script support it like that: 代替它,要解决我需要经过一个数组的问题,因为我的脚本像这样支持它:

$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`);";

Same this: https://stackoverflow.com/a/52370701/9632001 与此相同: https : //stackoverflow.com/a/52370701/9632001

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM