Скрипт не передает данные из массива - MySQL

Узнай цену своей работы

Формулировка задачи:

Всем привет, в общем сделал php скрипт, который должен из csv файла брать данные и закидывать в таблицу в MySQL. Проблема в том, что он из всех данных передает только первый столбец. Первый столбец в моем случае - просто id ячейки (1, 2, 3 И так далее). Посмотрите, пожалуйста, где косяк?
<html>
        <body>
        <form action="" method="post" enctype="multipart/form-data">
        Choose your file: <br /> 
        <input name="csv" type="file" id="csv" /> <br /> <br /> 
        <input type="submit" name="Submit" value="Submit" /> 
        </form>
    </body>
</html>
 
<?php
$host = "localhost"; 
$user = "root"; 
$pass = ""; 
$db = "my_bd"; 
$con = mysql_connect($host, $user, $pass);
if (!$con) {
    echo "Could not connect to server\n";
    die(mysql_error());
} else {
    echo "Соединение установлено\n"; 
}
 
$con1 = mysql_select_db($db);
 
//if (!$con1) {
//    echo "Cannot select database\n"."<br>";
//    die(mysql_error()); 
//} else {
//    echo "Database selected\n"."<br>";
//}
if ($_FILES[csv][size] > 0) {
$file = $_FILES[csv][tmp_name]; 
if (($handle = fopen($file, "r")) !== FALSE) {
    while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
        $sql = "INSERT INTO cars (id, город, марка, модель, год, цена, кузов, объем, топливо, кпп, руль, цвет, пробег, телефон) VALUES ('".mysql_escape_string($data[0])."','".mysql_escape_string($data[1])."',
'".mysql_escape_string($data[2])."','".mysql_escape_string($data[3])."',
'".mysql_escape_string($data[4])."','".mysql_escape_string($data[5])."',
'".mysql_escape_string($data[6])."','".mysql_escape_string($data[7])."',
'".mysql_escape_string($data[8])."','".mysql_escape_string($data[9])."',
'".mysql_escape_string($data[10])."','".mysql_escape_string($data[11])."',
'".mysql_escape_string($data[12])."','".mysql_escape_string($data[13])."')";
        
        $query = mysql_query($sql);
       
    }
     if($query){
            echo "  ..данные вставлены\n";
        }
        else{
            echo die(mysql_error());
        }
    fclose($handle);
}}
 
?>

Решение задачи: «Скрипт не передает данные из массива»

textual
Листинг программы
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE)

Объяснение кода листинга программы

  1. В цикле while происходит чтение данных из файла, который открыт для чтения с помощью функции fopen.
  2. Функция fgetcsv используется для чтения данных из файла и преобразования их в массив.
  3. Параметр $handle указывает на файл, который открыт для чтения.
  4. Параметр 1000 указывает на максимальное количество строк, которые можно прочитать за одну операцию.
  5. Параметр , указывает на разделитель, который используется в файле для разделения данных.
  6. Условие !== FALSE проверяет, что данные успешно считаны из файла.
  7. Каждая итерация цикла while обрабатывает одну строку данных из файла.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5