2012-07-12 5 views
0

Possible Duplicate:
Import CSV to mysqlИмпорт CSV-файл непосредственно в базу данных MySQL

Right Мне нужна помощь с этим:

Я пытаюсь импортировать CSV-файла в базу данных MySQL с помощью PHP, а не делать это вручную через PHPMyAdmin ,

Это код, у меня есть на данный момент:

if($_REQUEST['func'] == "iid"){ 
    $db->conn = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME) or 
         die('There was a problem connecting to the database.'); 
    $csv = $_POST['csv-file']; 
    $path = $csv; 
    $row = 1; 
    if (($handle = fopen($path, "r")) !== FALSE) { 
     while (($data = fgetcsv($handle, 1000, ";")) !== FALSE) { 
      $row++; 
      $data_entries[] = $data ; 

     } 
     fclose($handle); 
    } 
    // this you'll have to expand 
    foreach($data_entries as $line){ 
     $sql = $db->conn->prepare('INSERT INTO `bd_results`'); 

     $db->execute($line); 
    } 
} 

Однако я получаю следующее сообщение об ошибке:

Fatal error: Call to undefined method stdClass::execute() in /homepages/19/d372249701/htdocs/business-sites/bowlplex-doubles-new/admin/scores.php on line 44 

Для справки, я использую этот код взят из: Here

Я не очень разбираюсь в бизнесе $ db-> conn, я привык к mysql_connect !! поэтому любая помощь будет оценена по достоинству.

+0

Что вы получите, если вы используете $ db-> conn-> Execute()? - rephrase - это $ db или $ db-> conn, это объект базы данных? – MyStream

+0

@MyStream 'Неустранимая ошибка: вызов неопределенного метода mysqli :: execute() в /homepages/19/d372249701/htdocs/business-sites/bowlplex-doubles-new/admin/scores.php в строке 44' –

+0

Это лучше =), это тот объект, который вам нужен, но см. ниже правильный синтаксис для запроса. – MyStream

ответ

1

Попробуйте этот простой.

if (($handle = fopen("google.csv", "r")) !== FALSE) { 
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) { 
     $db->conn->query("INSERT INTO values('" . implode('\',\'', $data) . "');"); 
    } 
    fclose($handle); 
} 

Ваш скрипт также может потребовать добавить кавычки к значениям CSV, если они уже не имеют кавычек. Если вы будете нуждаться, чтобы иметь дело с цитатами и все в ваших файлах CSV, я рекомендую вам посмотреть в моем блоге на http://www.fusionswift.com/2012/07/php-import-csv-to-mysql/

+0

Все, что я получаю, это «У вас есть ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с '' в строке 1' с помощью '$ db-> conn-> error' –

+0

Взгляните на новый код – Tech163

+0

Я использую; как делиметр и «», как цитирует, что я могу изменить –

0
foreach($data_entries as $line) { 
    $stmt = $db->conn->prepare('INSERT INTO `bd_results` (field1, field2) VALUES (?, ?)'); 
    $stmt->bindParam('ss', $field1Value, $field2Value); 
    list($field1Value, $field2Value) = $line 
    $stmt->execute(); 
} 

Где $ field1Value это первый столбец CSV, $ field2Value является второй столбец CSV и как имеют тип string, указанный как таковой в методе bindParam().

В принципе, вам нужно будет подготовить запрос целиком, тогда вы можете назначить ему переменные, и как только переменные будут иметь желаемые значения, вы выполните запрос с использованием метода execute().

Так вы используете подготовленные заявления. Лично я бы пошел с предложением Махна и избегал использования подготовленных операторов для такой задачи, если вам не нужно обрабатывать данные во время их работы.

mysqli_stmt::bind_param mysqli_stmt::execute

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