Вставить в таблицу с подготовленным заявлением

Я пытаюсь вставить данные из формы в базу данных с помощью PHP и Mysqli, но я не могу заставить ее работать! В моей базе данных четыре поля: DATE, TITLE, CONTENT, ID. Поле идентификатора является автоматическим приращением.

Я проверил соединение, и все работает нормально. Я также повторил значения поля формы и переменную $ blogDate, которую я создал, и все в порядке.

Вот мое подготовленное заявление:

if ($newBlog = $mysqli->prepare('INSERT INTO Blog VALUES ($blogDate, $_POST["bTitle"], $_POST["bContent"])')) { $newBlog->execute(); $newBlog->close(); } 

Это просто не вставляет значения в мою таблицу.

Вы генерируете строки, содержащие SQL, которые не цитируются или не экранируются.

Не вставляйте данные непосредственно в строку SQL, используйте заполнители ( ? ), А затем связывайте параметры перед выполнением.

 $query = "INSERT INTO Blog VALUES (?, ?, ?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("sss", $blogDate, $_POST["bTitle"], $_POST["bContent"]); $stmt->execute(); 

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

 $newBlog = $mysqli->prepare('INSERT INTO Blog (`dateCol`, `titleCol`, `contentCol`) VALUES (?, ?, ?)'); $newBlog->bind_param( 'sss', $blogDate, $_POST["bTitle"], $_POST["bContent"] ); $newBlog->execute(); $newBlog->close(); 

поскольку вы используете поле auto increment, вам нужно указать имя столбца, а затем значения попробовать этот код

 $query = "INSERT INTO Blog (colname_1,colname_2,colname_3) VALUES (?, ?, ?)"; $stmt = $mysqli->prepare($query); $stmt->bind_param("sss", $blogDate, $_POST["bTitle"], $_POST["bContent"]); $stmt->execute();