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

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

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

Всем привет, в общем сделал php скрипт, который должен из csv файла брать данные и закидывать в таблицу в MySQL. Проблема в том, что он из всех данных передает только первый столбец. Первый столбец в моем случае - просто id ячейки (1, 2, 3 И так далее). Посмотрите, пожалуйста, где косяк?
Листинг программы
  1. <html>
  2. <body>
  3. <form action="" method="post" enctype="multipart/form-data">
  4. Choose your file: <br />
  5. <input name="csv" type="file" id="csv" /> <br /> <br />
  6. <input type="submit" name="Submit" value="Submit" />
  7. </form>
  8. </body>
  9. </html>
  10. <?php
  11. $host = "localhost";
  12. $user = "root";
  13. $pass = "";
  14. $db = "my_bd";
  15. $con = mysql_connect($host, $user, $pass);
  16. if (!$con) {
  17. echo "Could not connect to server\n";
  18. die(mysql_error());
  19. } else {
  20. echo "Соединение установлено\n";
  21. }
  22. $con1 = mysql_select_db($db);
  23. //if (!$con1) {
  24. // echo "Cannot select database\n"."<br>";
  25. // die(mysql_error());
  26. //} else {
  27. // echo "Database selected\n"."<br>";
  28. //}
  29. if ($_FILES[csv][size] > 0) {
  30. $file = $_FILES[csv][tmp_name];
  31. if (($handle = fopen($file, "r")) !== FALSE) {
  32. while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
  33. $sql = "INSERT INTO cars (id, город, марка, модель, год, цена, кузов, объем, топливо, кпп, руль, цвет, пробег, телефон) VALUES ('".mysql_escape_string($data[0])."','".mysql_escape_string($data[1])."',
  34. '".mysql_escape_string($data[2])."','".mysql_escape_string($data[3])."',
  35. '".mysql_escape_string($data[4])."','".mysql_escape_string($data[5])."',
  36. '".mysql_escape_string($data[6])."','".mysql_escape_string($data[7])."',
  37. '".mysql_escape_string($data[8])."','".mysql_escape_string($data[9])."',
  38. '".mysql_escape_string($data[10])."','".mysql_escape_string($data[11])."',
  39. '".mysql_escape_string($data[12])."','".mysql_escape_string($data[13])."')";
  40. $query = mysql_query($sql);
  41. }
  42. if($query){
  43. echo " ..данные вставлены\n";
  44. }
  45. else{
  46. echo die(mysql_error());
  47. }
  48. fclose($handle);
  49. }}
  50. ?>

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

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

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

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

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


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

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

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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут