Получить количество затронутых строк в MySQL

0

пытаясь получить поврежденный файл возврата строки 0, содержит 250 тыс. записей:

$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

  • 0
    Откуда $affectedRows строки. Что такое vardump ?
  • 1
    PDO не позволяет вам выполнять несколько запросов одним $pdo->exec() .
Показать ещё 5 комментариев
Теги:
pdo
load-data-infile

1 ответ

0
Лучший ответ

Решено:

Этот скрипт полностью одобрен:

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

Но я сливаю его с другим в некотором 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');

это неправильно, потому что $PDO->exec() Cant возвращает количество затронутых таблиц или строк.

Вместо этого, чтобы решить, мне нужно пройти массив, потому что мой скрипт поддерживает его так:

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

То же самое: qaru.site/questions/16438686/...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню