【问题标题】:Load data.csv when installing plugin安装插件时加载 data.csv
【发布时间】:2016-06-01 23:14:40
【问题描述】:

我是 wordpress 插件开发的新手。当有人安装插件并将数据从 csv 文件填充到表中时,我想创建一个新表。

这是我创建表的代码:

$sql = "CREATE TABLE $table_name (
    `id` int(11) unsigned NOT NULL AUTO_INCREMENT,
    `location` varchar(150) NOT NULL,
    `slug` varchar(150) NOT NULL,
    `population` int(10) unsigned NOT NULL,
       PRIMARY KEY (id) 
   ) ENGINE=InnoDB DEFAULT CHARSET=utf8";

$wpdb->query($sql);

运行后这个表就创建好了。

问题是我发现很难将 data.csv 填充到表中。

在 windows xampp 中它正在工作

$current_plugin_dir = dirname(__FILE__);
$current_plugin_dir = str_replace("\\","\\\\",$current_plugin_dir);
$current_plugin_dir = $current_plugin_dir . '\\\\data.csv';
$sql = "LOAD DATA LOCAL INFILE '$current_plugin_dir' INTO TABLE $table_name";
$wpdb->query($sql);

虽然实时服务器不工作...但下面的代码工作...

$current_plugin_dir = $current_plugin_dir.'/data.csv';
$sql = "LOAD DATA LOCAL INFILE '$current_plugin_dir' INTO TABLE $table_name";
$wpdb->query($sql);

但在我的 ubuntu 操作系统中似乎没有人工作.. 我进行了调试,似乎在 ubuntu 灯环境中运行了以下查询

LOAD DATA LOCAL INFILE '/var/www/html/testwp/wp-content/plugins/plugin-name/data.csv' INTO TABLE test_population

它触发了以下错误

1148 - 此 MySQL 版本不允许使用的命令

是否有在所有平台上加载 csv 的单一方法?有什么帮助吗?

【问题讨论】:

    标签: php mysql csv wordpress


    【解决方案1】:

    您可以在设置连接时将其指定为附加选项:

    mysql -u myuser -p --local-infile yourdatabase
    

    或将其放入您的 my.cnf 文件中:

    [client]
    loose-local-infile=1
    

    这是因为该功能打开了一个安全漏洞并且默认情况下被禁用。所以你必须手动启用它以防你想使用它。

    另一种选择是使用 fopen() 和通常的 sql 插入来读取文件。

    【讨论】:

    • 我应该把 mysql -u myuser -p --local-infile yourdatabase 放在 wordpress 哪里?
    • 无处,这必须在服务器级别完成,但是为了使您的插件在任何地方都有用,您应该考虑不要使用 LOAD DATA INFILE。
    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2012-11-24
    • 2019-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多