Я пытаюсь вставить текст (кодированный 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 строк не вставляются в таблицу БД. Есть ли что-то, что мне не хватает?
Большое спасибо за помощь.
Это неверно:
$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 инъекций.
Вы должны исправить свой mysql_error как рекомендуется @Marc
Также вы должны использовать fgetcsv Функция для анализа вашего файла и проверки правильности количества полей в каждой строке.
Из-за этого
$ _REQUEST [ ‘theme_id’]
злоумышленник может вставить в запрос все, что захочет (инъекция sql).
Никогда не верь тому, что отправил пользователь