PHPExcel вставляет 38 из 48 строк в MySQL из файла xlsx

Я пытаюсь вставить текст (кодированный UTF-8) из файла Excel, который имеет 48 строк в таблицу MySQL. Только 38 из строк вставляются. Некоторые строки имеют специальные символы, такие как «/», «?», «:», «,», «.», «()», «‘», «» «,»! «.

foreach ($ret as $rec) {
if($count == 0) {
$count++;
continue;
}

$insert = "INSERT INTO chall (description, time, coin, mode, kids, teens, adults, theme_id, type_id) VALUES ('{$rec['A']}', '{$rec['B']}', '{$rec['C']}', '{$rec['D']}', '{$rec['E']}', '{$rec['F']}', '{$rec['G']}', '{$_REQUEST['theme_id']}', 1)";
$ins_query = mysql_query($insert) or mysql_error();
if(0)
{
die("Error! Can Not Upload Data...");
}
}

Ниже приведен пример текста, который был успешно вставлен в БД:
Притворяться для E! Новости. Это пример. Попросите двух человек дать вам быстрый ответ на этот вопрос: «Какие из них не являются цветами: черный, коричневый, камедь, синий, джим, синий или зеленый?»

Ниже приведен пример, который не был вставлен в БД:
Zig-а-зиг-ах! Получите группу друзей, чтобы воспроизвести этот тест и переделать видео от Spice Girls в публичной обстановке. Получите незнакомцев, чтобы присоединиться к веселью!

Я исследовал столько, сколько мог, и не нашел никаких ответов. 10 строк не вставляются в таблицу БД. Есть ли что-то, что мне не хватает?
Большое спасибо за помощь.

0

Решение

Это неверно:

$ins_query=  mysql_query($insert) or mysql_error();
^^^^^^^^^^^^^^

mysql_error() возвращает строку Это означает, что если mysql_query() не удается (и возвращает логическое значение falseВы назначаете строку ошибки $ins_query, Это означает $ins_string никогда не может быть логическим ложным, что вы должны проверять, чтобы обнаружить ошибку.

А потом

if(0)

будет всегда оценивать как ложное и не выполнять die в любом случае, так что вы не можете определить, когда произошла ошибка.

У тебя должно быть

 $result = mysql_query(...);
if($result === false) {
die(mysql_error());
}

И обратите внимание, что вы уязвимы для SQL инъекций.

0

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

Вы должны исправить свой mysql_error как рекомендуется @Marc

Также вы должны использовать fgetcsv Функция для анализа вашего файла и проверки правильности количества полей в каждой строке.

Из-за этого

$ _REQUEST [ ‘theme_id’]

злоумышленник может вставить в запрос все, что захочет (инъекция sql).

Никогда не верь тому, что отправил пользователь

0

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