2016-02-11 1 views
0

У меня есть функция php, которую я написал в Wordpress. Я беру 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 

И версия первенствует enter image description here

+0

ли вы на самом деле звонит функция из любого места? Я вижу определение функции, но не фактический вызов функции. – Lock

+0

Итак, вы говорите, что подтвердили, что все остальное работает, кроме таблицы сбрасывания? – tokamak

+0

Да Я вызываю функцию. Он даже выводит строку в конце функции, сообщающей мне, что все было введено в БД, но это не так. И нет, это не работает. Ничего в функции не работает. Когда есть ошибка в неправильном пути к файлу и т. д., это говорит мне, он показывает строку в конце функции I echo, но не имеет успеха. – wuno

ответ

0

Я беру его из закомментированного код, который вы уже пробовали wpdb->query($sql); ??

EDIT:

точку с запятой в конце строки вашего $ 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

Смежные вопросы