CSV-файл с разделителем, отличным от запятой в переполнении стека

Я вставляю данные в таблицу в виде массовой загрузки,
$ handle = fopen ($ _ FILES [‘file_clg’] [‘tmp_name’], «r»);

        fgetcsv($handle);

while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {

$collegename = trim(str_replace(array("’","'"),"'",$data[0]));

$description = trim(str_replace(array("’","'"),"'",$data[1]));

$sql1 = $db->selectquery("insert into $tbl(name,details)values('" .$collegename."','" .$description."')");

}

fclose($handle);

Здесь упоминаются только два поля: более 25 столбцов в моем CSV для массовой загрузки

Проблема заключается в том, что разделитель csv — это запятая (‘,’), но в некоторых случаях содержимое поля «детали» включает запятые, так как в этом случае запись вставлена ​​неправильно.

как решить это дело ???

И проблема в разделе вставки,

Название колледжа: Инженерный институт Альвы & Технология (AIET)

и его сохраняют в виде таблицы в следующем формате:

Инженерный институт Альваса & Технология (AIET)

Я пытаюсь ниже код:

          $collegename = htmlentities(iconv("cp1252", "utf-8", trim(str_replace(array("’","'"),"'",$data[0]))), ENT_IGNORE, "UTF-8");

но это не работает, как я могу решить проблему в одинарных кавычках

И я поместил: заголовок («Content-Type: text / html; charset = ISO-8859-1»);

в заголовок раздела ..

0

Решение

Мне нужно было бы увидеть некоторые примеры, чтобы сказать что-нибудь с уверенностью, но есть спецификации для цитирования значений с запятыми, чтобы сохранить счетчик значений.
https://stackoverflow.com/a/769675/2943403

Кроме того, вы можете создать новый fputcsv() блок кода, который будет генерировать CSV-файл с разделителями точкой с запятой (или другим неконфликтующим символом). Я не предоставляю фактический фрагмент для этого. Есть много доступных ресурсов на SO, в том числе:

Тогда ваш цикл while может использовать ; (или что угодно) в качестве разделителя.

Что касается безопасного размещения ваших значений (которые могут иметь одинарные кавычки) в вашем запросе, используйте готовые заявления

// I realize your query will be much larger than the sample...
// declare $collegename and $decription values
$stmt=$db->prepare("INSERT INTO `$tbl` (`name`,`details`) VALUES (?,?)");
$stmt->bind_param("ss", $collegename,$description);
if($stmt->execute()){
echo "success";
}else{
echo "Error: ",$db->error;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]