Не работает запрос на вставку в БД. Как исправить?

Не работает запрос INSERT
spoiler
$cat = $_POST['cat'];
$title = $_POST['title'];
$keyw = $_POST['keywords'];
$descr = $_POST['description'];
$textt = $_POST['text'];
$hard = $_POST['hard'];
$mini_img = $_POST['mini_img'];
$source = $_POST['source'];
$file = $_POST['file'];
$file_size = $_POST['file_size'];
$demo = $_POST['demo'];
$syntax = $_POST['syntax'];
$view = 0;
$author = "Николай Чахов";

echo "<pre>";
var_dump ($_POST);
echo "</pre>";

$query = "INSERT INTO `post` (`post_id`, `cat`, `title`, `keywords`, `description`, `text`, `hard`, `mini_img`, `author`, `source`, `file`, `file_size`, `demo`, `date', `view`, `syntax`) 
VALUES (' ',$cat,$title,$keywords,$description,$text,$hard,$mini_img,$author,$source,$file,$file_size,$demo, NOW(),$view,$syntax)";

$result = $con->query($query);
if ($result == true){ 	
	echo "<p>Информация занесена в базу данных</p>"; 
} else { 	
    echo "<p>Информация не занесена в базу данных</p>"; 
    echo('Ошибка : ('. $con->connect_errno .') '. $con->connect_error);
}

Запрос не проходит, ошибок не возвращает.
  • Вопрос задан
  • 75 просмотров
Решения вопроса 1
@FanatPHP
Чебуратор тега PHP
Неудивительно что не работает. Тут неправильно примерно всё.

  1. Пробел нельзя вставлять в поле с автоинкрементом. Надо вставлять либо null либо вообще пропустить это поле.
  2. Переменные надо отправлять не напрямую, а через подстановки
  3. Ошибки никогда не надо выводить вручную, а надо оин раз настроить базу чтобы она сообщала об ошибках сама


Код для соединения взять отсюда

А сам запрос выполнять так:
Все переменные надо заменить в запросе на знаки вопроса,
затем подготовить запрос,
привязать к нему переменные,
и выполнить

$query = "INSERT INTO `post` (`post_id`, `cat`, `title`, `keywords`, ...) 
VALUES (null,?,?,?, ..., NOW(),?,?)";
$stmt = $con->prepare($query);
$stmt->bind_param("sss...", $cat,$title,$keywords, ...);
$stmt->execute();
echo "<p>Информация занесена в базу данных</p>";

Количество знаков вопроса в запросе и количество букв "s" в первом параметре bind_param должно соответствовать количеству переменных.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы