@Angelxalfa

Пропадает символ \ при парсинге csv?

Есть файл csv, в котором некоторые поля содержат символ \.
Этот файл разбирается посредством php и полученные данные заносятся в MySQL таблицу.
include 'connect.php';
		$table = "".$prefix."table"; 
  $handle = fopen('php://memory', 'w+');
fwrite($handle, iconv('CP1251', 'UTF-8', file_get_contents('in.csv')));
rewind($handle);
   $r = 0; 
   set_time_limit(0);
while (($row = fgetcsv($handle, 1000, ';', '"')) != FALSE) 
   {
        $r++;
      if($r == 1) {continue;} // Не дает записать в БД первую строку 
      $ins="INSERT INTO $table (`1`, `2`, `3`, `4`, `5`, `6`, `7`, `8`) VALUES ('$row[0]', '$row[1]', '$row[2]', '$row[3]', '$row[4]', '$row[5]', '$row[6]', '$row[9]')";
      mysql_query($ins);
      if (mysql_errno()) {echo mysql_errno() . '\n' . mysql_error() . '\n';}
   }


После заноса данных в таблицу пропадают символы \ (при этом символы / остаются нетронутыми).
Как с эти бороться? Заранее спасибо!

Решил проблему благодаря ILoveYAnny:

меняем Msql запрос на
$ins=sprintf("INSERT INTO $table (`1`, `2`, `3`, `4`, `5`, `6`, `7`) VALUES ('$row[0]', '$row[1]', '$row[2]', '$row[3]', '%s', '$row[5]', '$row[6]')",mysql_real_escape_string($row[4]));

(в моем случае проблема была в $row[4])
  • Вопрос задан
  • 2911 просмотров
Решения вопроса 1
ILoveYAnny
@ILoveYAnny
Я могу быть не прав, но мне кажется PHP принимает это за символ экранирования. Попробуй указать экранирование перед символом \ , возможно есть другие способы указать, что это не символ экранироания, а символьный текст. Мб указать кавычками.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы