Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/wordpress/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Wordpress数据库中导入CSV文件_Php_Wordpress_Csv - Fatal编程技术网

Php 在Wordpress数据库中导入CSV文件

Php 在Wordpress数据库中导入CSV文件,php,wordpress,csv,Php,Wordpress,Csv,我编写了一个php脚本,将CSV文件导入wordpress数据库。今天,我一直在处理各种各样的错误,这些错误使网站崩溃,直到我修复它们 现在,所有错误都被清除,函数末尾的字符串被打印到屏幕上,好像一切正常,但它没有将我的数据输入数据库 同样为了测试,我删除了createdb部分,只留下remove来查看它是否会删除DB,但它没有。因此,基本上我的函数似乎没有错误,但它正在运行。而且它实际上什么也没做。我不明白它是如何通过函数运行的,每当出现错误或文件路径不存在,但实际上没有执行我试图执行的操作时

我编写了一个php脚本,将CSV文件导入wordpress数据库。今天,我一直在处理各种各样的错误,这些错误使网站崩溃,直到我修复它们

现在,所有错误都被清除,函数末尾的字符串被打印到屏幕上,好像一切正常,但它没有将我的数据输入数据库

同样为了测试,我删除了createdb部分,只留下remove来查看它是否会删除DB,但它没有。因此,基本上我的函数似乎没有错误,但它正在运行。而且它实际上什么也没做。我不明白它是如何通过函数运行的,每当出现错误或文件路径不存在,但实际上没有执行我试图执行的操作时,该函数都会告诉我

如果您对如何解决此问题或从何处着手提供任何意见,我们将不胜感激

function productsExec() {

       require_once(ABSPATH . 'wp-admin/includes/upgrade.php');
       global $wpdb;
       global $simple_prod_version;

       $table_name = $wpdb->prefix . "wuno_inventory";
       if($wpdb->get_var("show tables like '$table_name'") != $table_name) {

       $sql = "DROP TABLE IF EXISTS $table_name";
       dbDelta($sql);
    // $wpdb->query($sql);

      $sql = "CREATE TABLE " . $table_name . " (
      id int(8) NOT NULL AUTO_INCREMENT,
      wuno-product varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      wuno-description varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      wuno-alternates varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      wuno-onhand varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      wuno-condition varchar(255) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
      PRIMARY KEY (id)
    ) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ;";

        dbDelta($sql);
    // $wpdb->query($sql);

    //Upload File
    if (is_uploaded_file($_FILES['inventory.csv']['tmp_name'])) {
        echo "<h1>" . "File ". $_FILES['inventory.csv']['name'] ." uploaded successfully." . "</h1>";
        echo "<h2>Displaying contents:</h2>";
        readfile($_FILES['inventory.csv']['tmp_name']);
    }
    //Import uploaded file to Database
    $handle = fopen(inventory.csv, 'w');
    while (($data = fgetcsv($handle, 10000, ",")) !== FALSE) {
        $insert = "INSERT INTO" . $table_name . "(wuno-product, wuno-description, wuno-alternates, wuno-onhand, wuno-condition)" .     
        "VALUES ('$data[0]', '$data[1]', '$data[2]', '$data[3]', '$data[4]')";
        $results = $wpdb->query( $insert );
    }
    fclose($handle);
        echo 'Everything seems to be running smoothly.';
    }
}
函数productsExec(){
require_once(ABSPATH.'wp admin/includes/upgrade.php');
全球$wpdb;
全球$simple\u产品版本;
$table_name=$wpdb->前缀“wuno_库存”;
if($wpdb->get_var(“显示像“$table_name”这样的表)!=$table_name){
$sql=“如果存在,则删除表格$TABLE\u name”;
dbDelta($sql);
//$wpdb->query($sql);
$sql=“创建表”。$TABLE\u名称(
id int(8)非空自动增量,
wuno product varchar(255)字符集utf8 COLLATE utf8\U unicode\U ci非空,
wuno description varchar(255)字符集utf8 COLLATE utf8\U unicode\U ci非空,
wuno交替使用varchar(255)字符集utf8 COLLATE utf8\U unicode\U ci NOT NULL,
wuno现有varchar(255)字符集utf8 COLLATE utf8\U unicode\U ci NOT NULL,
wuno条件varchar(255)字符集utf8 COLLATE utf8\U unicode\U ci非空,
主键(id)
)ENGINE=MyISAM默认字符集=latin1自动增量=1;“;
dbDelta($sql);
//$wpdb->query($sql);
//上传文件
如果(是上传的文件($文件['inventory.csv']['tmp\u name'])){
echo“.”文件“$_文件['inventory.csv']['name']”。已成功上载。“”;
echo“显示内容:”;
readfile($_文件['inventory.csv']['tmp_name']);
}
//将上载的文件导入数据库
$handle=fopen(inventory.csv,'w');
while(($data=fgetcsv($handle,10000,“,”)!==FALSE){
$insert=“插入“$table\U name.”(无产品、无描述、无替代品、无现有、无条件)”。
“值(“$data[0]”、“$data[1]”、“$data[2]”、“$data[3]”、“$data[4]”);
$results=$wpdb->query($insert);
}
fclose($handle);
echo“一切似乎都进展顺利。”;
}
}

如评论中所述,并根据OP的要求:

插入到“$table\u name”中。
转换为,例如
插入到tablename
,因为
信息
之间没有空格。

另外,MySQL将列名称转换为
wuno
,并将其转换为数学公式,其他列名称也是如此

$insert = "INSERT INTO " . $table_name . " (`wuno-product`, `wuno-description`, `wuno-alternates`, `wuno-onhand`, `wuno-condition`)
请参阅标识符限定符

可以使用连字符,但必须在列名周围使用记号

$insert = "INSERT INTO " . $table_name . " (`wuno-product`, `wuno-description`, `wuno-alternates`, `wuno-onhand`, `wuno-condition`)
编辑:

我发现了别的东西

$handle = fopen(inventory.csv, 'w');
文件名周围应该有引号:

$handle = fopen("inventory.csv", 'w');
根据
fopen()上的手册

错误报告会给你一个通知

另外,由于您使用的是
$\u文件
,如果使用的是表单,那么它应该是一个POST方法,并且包含一个有效的enctype

但是,这似乎无效
$\u文件['inventory.csv']
,或者不清楚

通常,第一个数组参数是匹配的名称属性。请参阅上面的手动链接

还可以添加到文件的顶部,这将有助于查找错误

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

据我所知,这个
插入到”$表格名称。“
转换为,例如,
插入到tablename
,MySQL正在将列名转换为
wuno-减号产品
等。检查错误会告诉您。很感谢您的反馈,我没有收到任何错误。我会尝试找出您确定错误检查正在进行的原因?哈我看了一下WordPress开发堆栈交换上的问答-和
$wpdb->last_error
是的,先生,它是打开的。它显示错误检查打开时总是显示的典型错误。我将wuno产品更改为wuno_产品,并确保前缀与其他所有内容一样出现在数据库表中。因为我声明在表名中。唯一改变的是我最后的字符串现在没有触发,但仍然没有错误。我将检查链接谢谢。不客气。你也需要对其他列名执行相同的操作。祝你好运。嘿,非常感谢你花时间帮助我。你真的帮了我很多忙。因为你有让我度过难关。祝你晚上愉快,弗雷德。@wuno,不客气。不过,请重新加载我的答案,因为我发现了与
$\u文件['inventory.csv'有关的其他内容
并留下了一个链接,让他们了解有关文件处理的问题。祝您度过一个愉快的夜晚,谢谢。谢谢,现在看来,文件上传是我唯一要解决的问题。基本上,我决定让他们将文件ftp到服务器上,因为其中可能有88k行。所以我想我需要检查文件是否ist然后将其从csv转换为mysql。我目前正在查找if(isset)以确定这是否会起作用。@wuno不客气。
isset()
可以,但最好使用
!empty()
作为“notempty”。因为
isset()
可能会给出输入的误判。!empty()vs file_存在(路径)还是一件比另一件好?