Невозможно опубликовать текст в MySQL, используя «Insert Into»

Я использую этот запрос для ввода информации для редактирования переднего конца. 2 проблемы. Во-первых, ввод работает отлично, как номер, но не будет публиковать текст. Во-вторых, new_type1 и new_type2 являются флажками и не публикуются правильно.

$query = "DELETE p.* FROM #__bl_press as p WHERE p.match_id = ".$row->id; $db->setQuery($query); $db->query(); if(isset($_POST['new_source']) && count($_POST['new_source'])){ for ($i=0; $i< count($_POST['new_source']); $i++){ $new_event1 = $_POST['new_source'][$i]; $query = "INSERT INTO #__bl_press(n_source, n_title, n_link, match_id, type1, type2) VALUES(".$new_event1.",".$_POST['new_title'][$i].",".$_POST['new_link'][$i].",".$row->id.",".intval($_POST['new_type1'][$i]).",".intval($_POST['new_type2'][$i]).")"; $db->setQuery($query); $db->query(); } } 

Вам нужны котировки вокруг значений строк:

 $query = "INSERT INTO #__bl_press(n_source,n_title,n_link,match_id,type1,type2)". "VALUES('".$new_event1."','".$_POST['new_title'][$i]."','" . // etc // ^ ^ ^ ^ ^ 

Также вы должны использовать mysql_real_escape_string или параметризованные запросы, чтобы избежать уязвимостей SQL-инъекций и ошибок времени выполнения, когда опубликованные данные содержат символы, такие как кавычки или обратные слэши. См. Также этот вопрос для получения дополнительной информации:

  • Лучший способ остановить SQL Injection в PHP

Вы не добавляете котировки ( ' ) вокруг них. Число – это просто число, но строка должна быть записана как "string" а не string .

Кроме того, чтобы избежать инъекций SQL, всегда используйте mysql_real_escape_string или другие функции экранирования.

Может быть, вы забыли использовать одиночную кавычку (') для строки. Просто глупая ошибка:

 $query = "INSERT INTO #__bl_press(n_source,n_title,n_link,match_id,type1,type2) VALUES('".$new_event1."','".$_POST['new_title'][$i]."','".$_POST['new_link'][$i]."',".$row->id.",'".intval($_POST['new_type1'][$i])."','".intval($_POST['new_type2'][$i])."')";