Я пытаюсь вставить данные из формы в базу данных с помощью 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();