Я использую этот запрос для ввода информации для редактирования переднего конца. 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-инъекций и ошибок времени выполнения, когда опубликованные данные содержат символы, такие как кавычки или обратные слэши. См. Также этот вопрос для получения дополнительной информации:
Вы не добавляете котировки ( '
) вокруг них. Число – это просто число, но строка должна быть записана как "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])."')";