mil*_*ils 5 php mysql pdo laravel
我在Laravel中运行以下准备好的语句时遇到麻烦:
$pdo = DB::connection()->getPdo();
$ps_TempTable_PushCsv = $pdo->prepare(
"LOAD DATA LOCAL INFILE '123'
INTO TABLE `123`
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'"
);
$ps_TempTable_PushCsv->execute();
$ps_TempTable_PushCsv->closeCursor();
$rowCount = $ps_TempTable_PushCsv->rowCount();
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
[2017-06-08 03:41:35] local.ERROR:PDOException:SQLSTATE [HY000]:一般错误:2014在其他无缓冲查询处于活动状态时,无法执行查询。考虑使用PDOStatement :: fetchAll()。另外,如果您的代码只打算针对mysql运行,则可以通过设置PDO :: MYSQL_ATTR_USE_BUFFERED_QUERY属性来启用查询缓冲。
这是我的控制器的入口点,因此绝对不会运行任何先前的查询。
做什么?
谢谢
我能使它起作用的唯一方法是用“ exec”调用替换准备好的语句:
$rowCount = DB::connection()->getpdo()->exec(
"LOAD DATA LOCAL INFILE '$fileName'
INTO TABLE $tableName
CHARACTER SET utf8mb4
FIELDS TERMINATED BY ','
OPTIONALLY ENCLOSED BY '\"'
LINES TERMINATED BY '\\n'"
);
Run Code Online (Sandbox Code Playgroud)
我不知道为什么在Laravel中使用预备语句不能正常工作-它确实可以用于纯PDO预备语句。