【问题标题】:Converting CSV File To Mysql Database PHP将 CSV 文件转换为 Mysql 数据库 PHP
【发布时间】:2016-05-21 16:03:22
【问题描述】:

我有一个我在 Wordpress 中编写的 php 函数。我在与我的插件函数相同的文件夹中获取一个 CSV 文件并尝试将其输入到数据库中。

我在 wp-config.php 中启用了错误报告 以及我自己的php

我收到一条错误消息。

SQLSTATE[42S01]: Base table or view already exists: 1050 Table 'wuno_inventory' already exists

我的代码确实删除了表并创建了它。分别测试和一起测试。一旦我开始导入 csv 文件部分,什么都不会发生。

所以我的代码正在被读取,但显然没有执行。

任何想法将不胜感激。非常感谢。

function productsExec() {
      $hostname='localhost';
      $username='username';
      $password='password';
      $database='databaseName';
      $table_name = "wuno_inventory";
      // path where your CSV file is located
      define('CSV_PATH','');
      // Name of your CSV file
      $csv_file = CSV_PATH . "inventory.csv"; 

      try {
      $dbh = new PDO("mysql:host=$hostname;dbname=$database",$username,$password);
      $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
      $sql = "DROP TABLE IF EXISTS $table_name";
      $dbh->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 ;";
      $dbh->query($sql);

    if (($handle = fopen($csv_file, "r")) !== FALSE) {
           fgetcsv($handle);   
           while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
                $num = count($data);
                for ($c=0; $c < $num; $c++) {
                  $col[$c] = $data[$c];
                }

         $col1 = $col[0];
         $col2 = $col[1];
         $col3 = $col[2];
         $col4 = $col[3];
         $col5 = $col[4];

        // SQL Query to insert data into DataBase
        $query = "INSERT INTO " . $table_name . "(wuno_product, wuno_description, wuno_alternates, wuno_onhand, wuno_condition) 
        VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."')";
        $results = $dbh->query( $query );
        }
        fclose($handle);
        }
        if ($dbh->query($sql)) {
        echo "<script type= 'text/javascript'>alert('New Record Inserted Successfully');</script>";
        }
        else{
        echo "<script type= 'text/javascript'>alert('Data not successfully Inserted.');</script>";
        }
        $dbh = null;
        }
        catch(PDOException $e)
        {
        echo $e->getMessage();
        }  
 }

csv 文件

Product,Description,Alternates,Onhand,Condition
8855K5,,MS21026-B211,12,12
M39029/5-117,,,13,13
Q4559,,PROD CODE: 40579,1,1
,,40579,,
RESTOCKING CHARGE,,,1,1
TAS8732-1C2,,,7,7
TEST REPORTS,,,6,6

还有excel版本

【问题讨论】:

  • 你实际上是从任何地方调用你的函数吗?我看到了函数定义,但没有看到函数的实际调用。
  • 所以你是说你已经确认除了 drop table 之外的所有东西都可以工作?
  • 是的,我正在调用该函数。它甚至会在函数末尾打印出字符串,告诉我所有内容都已输入到数据库中,但还没有。不,它不工作。函数中的任何内容都不起作用。当出现错误的错误文件路径等时,它会告诉我然后我修复它,然后它会在我回显但没有成功的函数末尾显示字符串。
  • 这是怎么复制的?那家伙正试图删除一个表,我正在将一个 CSV 文件添加到数据库中。
  • 你还丢了一张桌子:)。但这可能不是问题,当然。

标签: php mysql wordpress csv


【解决方案1】:

我从你尝试过的注释掉的代码中得到它wpdb-&gt;query($sql); ??

编辑:

在 $sql 查询字符串的末尾添加一个分号 :)

$sql = "DROP TABLE IF EXISTS $table_name;"; // see the ; inside the quotes

$query = "INSERT INTO " . $table_name . " (wuno_product, wuno_description, wuno_alternates, wuno_onhand, wuno_condition) 
VALUES('".$col1."','".$col2."','".$col3."','".$col4."','".$col5."');";

// 添加倒数第三个字符: ;引号内和 '(' 之前的空格

最后,据我所知,$col4 和 $col5 是未定义的,所以这可能会导致整个查询不起作用。

【讨论】:

  • 是的,正如您在注释掉的代码中看到的那样,我已经尝试过了。
  • 请只回答一个。还请举例说明您的答案,我不明白您在说什么。你可以编辑它。
  • 好吧,不知道这是首选的礼仪。现在一切都在这个答案中。
  • 感谢您的回答。这不能解决问题。叹息这让我死了。
  • 你能发布csv文件内容的例子吗?
猜你喜欢
  • 1970-01-01
  • 2013-02-03
  • 2018-02-12
  • 1970-01-01
  • 1970-01-01
  • 2018-01-29
  • 2019-09-11
  • 2012-07-06
  • 2018-07-11
相关资源
最近更新 更多