2016-02-11 72 views
0

我有一個我在Wordpress中編寫的php函數。我在與我的插件功能相同的文件夾中獲取CSV文件並嘗試將其輸入到數據庫。將CSV文件轉換爲Mysql數據庫PHP

我在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版本 enter image description here

+0

你居然打電話給你函數在任何地方?我看到的函數定義,但不是實際的函數調用 – Lock

+0

所以你說你已經證實除了drop table之外的其他所有工作嗎? – tokamak

+0

是的我在調用函數,它甚至打印出字符串在函數結束時告訴我所有的數據都已經輸入到數據庫中但它沒有工作沒有任何工作當沒有錯誤的文件路徑等它告訴我然後我修復它然後它顯示了函數結尾的字符串I echo但沒有成功。 – wuno

回答

0

我把它從你的註釋掉的代碼,你試過wpdb->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."');"; 

//從最後一個字符加3的末尾:;的報價和空間之前,內「(」

最後,$ COL4和$ COL5是不確定的,據我所知道的,所以這將可能導致整個查詢不工作。

+0

是的,正如您在我註釋掉的代碼中看到的那樣,我嘗試過。 – wuno

+0

請只做一個答案。還請顯示你的答案的例子我不明白你在說什麼。你可以編輯它。 – wuno

+0

好吧,不知道那是首選的禮儀。現在一切都在這個答案中。 – tokamak