Скрипт не передает данные из массива - 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)
Объяснение кода листинга программы
- В цикле while происходит чтение данных из файла, который открыт для чтения с помощью функции fopen.
- Функция fgetcsv используется для чтения данных из файла и преобразования их в массив.
- Параметр $handle указывает на файл, который открыт для чтения.
- Параметр 1000 указывает на максимальное количество строк, которые можно прочитать за одну операцию.
- Параметр
,
указывает на разделитель, который используется в файле для разделения данных. - Условие !== FALSE проверяет, что данные успешно считаны из файла.
- Каждая итерация цикла while обрабатывает одну строку данных из файла.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д