php - LOAD DATA LOCAL INFILE 在... PHP 中被禁止

标签 php mysql

我正在尝试使用 LOAD DATA INFILE 将一些记录插入到表中。不幸的是,它不起作用。

这里有一些细节

如果我使用这条指令:

LOAD DATA INFILE 'file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);

它使用 MySQL 客户端程序和 PHP 应用程序工作。这样,它将在我的 MySQL 安装的数据目录中查找该文件。

现在如果我尝试使用 LOCAL 选项执行指令,它只在我使用 mysql 客户端时有效,而不是从 PHP:

LOAD DATA LOCAL INFILE 'path/to/file/file.txt'
INTO TABLE table_ex
FIELDS TERMINATED BY ','
LINES TERMINATED BY '\n'
(field1, field2, field3, field4);

再次......它适用于 MySQL 客户端,但不适用于 PHP 应用程序......我收到此错误:

LOAD DATA LOCAL INFILE forbidden in /path/to/my/application

我读到这个问题与PHP的编译和使用mysqlnd有关。我正在使用 PHP 5.3.8 和 MySQL 5.5.15,但我还没有找到解决方案。

附加信息:到目前为止,我找到的唯一帮助是 open PHP bug :

最佳答案

查看文档 http://php.net/manual/en/ref.pdo-mysql.php .

基本上你需要:

PDO::MYSQL_ATTR_LOCAL_INFILE => true

在实例化时设置。

示例:

    $conn = new \PDO("mysql:host=$server;dbname=$database;", "$user", "$password", array(
        PDO::MYSQL_ATTR_LOCAL_INFILE => true,
    ));

关于php - LOAD DATA LOCAL INFILE 在... PHP 中被禁止,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7638090/

相关文章:

php - TYPO3 - upload_max_filesize 安装错误

php - 如何使用php在mysql中插入多个值

php - 输入类型文本字段给出固定错误 2147483647

mysql - 在 mysql ADDDATE 中将 INTERVAL 设置为变量

php - PDO,准备声明但我不绑定(bind)值

php - 按第一个字符过滤列值?

php - Laravel中间件获取路由参数

php - 无法使用 php 的 PDO 将数据插入数据库

mysql - 获取mysql错误1064

php - 在 MySQL 中存储嵌套导航菜单