Неправильный импорт из csv в mysql

239
24 июня 2017, 11:22

Здравствуйте. У меня имеется такой php код, который заливает данные из csv файла в базу MySQL

$file = fopen('test.csv', 'r'); 
   while(!feof($file))
       {
    $mass = fgetcsv($file, 1700, ';');
    $j = count($mass);
    if($j > 1){
        $mysqli->query("INSERT INTO test (id, name_group, name, price, remainder, description) VALUES ('{$mass[0]}', '{$mass[1]}', '{$mass[2]}', '{$mass[3]}', '{$mass[4]}', '{$mass[5]}')");
              }
       }
    fclose($file);
    $mysqli->close();

Все отрабатывает, но в поле name_group у меня данные вида Группа\Подгруппа и когда заливатеся в базу получается ГруппаПодгруппа как можно не потерять этот слэш? Если я прямо в php коде вывожу данные, это поле он мне показывает правильно.

Answer 1

Используйте функцию PHP mysqli_real_escape_string

Суть функции как раз в решении подобных проблем, но ко всему прочему она призвана делать вставку данных в БД безопасной для самой БД.

Ваша вставка будет выглядеть примерно так:

$mysqli->query("INSERT INTO test (id, name_group, name, price, remainder, description)
VALUES (
'".$mysqli->real_escape_string($mass[0])."',
'".$mysqli->real_escape_string($mass[1])."',
'".$mysqli->real_escape_string($mass[2])."',
'".$mysqli->real_escape_string($mass[3])."',
'".$mysqli->real_escape_string($mass[4])."',
'".$mysqli->real_escape_string($mass[5])."'
)");

И ничего не потеряется, в БД попадет именно то, что вы туда хотите поместить

READ ALSO
арифметическое действие mysql c условием

арифметическое действие mysql c условием

Как правильно произвести арифметическое действие на ячейку с условием id_nds=1

271
Удалить объект из списка

Удалить объект из списка

У меня есть список и объект, но я не знаю его порядковый номер, как я могу его удалить из списка?

364
Как выполнить код, записанный в массиве String

Как выполнить код, записанный в массиве String

Мне нужно чтобы программа выполняла код, записанный в массиве строкДопустим:

337