Я создаю внутреннюю базу знаний и изо всех сил пытаюсь успешно создавать новые записи БД с помощью PHP.
Для использования этой функциональности я создал несколько файлов:
Я вручную создал записи в таблице MySQL, чтобы проверить предыдущие файлы, и я могу успешно просматривать и редактировать сообщения, но когда я пытаюсь создать новую запись, она выдает ошибку 500 при вызове post_handler.php, и я не могу понять, почему.
Для простоты и поскольку другие функции работают, я покажу функцию создания сообщения в классе Post (post_controller.php):
static $dbh;
static function create ($post) {
$sql = "INSERT INTO mydb.Posts (title, body) values (?.?)";
$stmt = self::$dbh -> prepare($sql);
if ($stmt){
$stmt -> bindValue(1, $post["title"]);
$stmt -> bindValue(2, $post["body"]);
return $stmt -> execute();
}
}
Вот сообщение handler.php:
require_once("config.php");
require_once("post_controller.php");
if (!empty($_POST["id"])) {
// update
if (Post::update($_POST)) {
echo "Successfully updated";
} else {
header("HTTP/1.0 500 Internal error");
echo "Couldn't update";
}
} else {
// create
if (Post::create($_POST)) {
echo "Successfully created new article";
header ("Location: index.php");
} else {
header("HTTP/1.0 500 Internal error");
echo "Couldn't create new article";
}
}
Вот скрипт AJAX для отправки формы в post_editor.php:
$id = ($_GET["id"]);
if ($id) {
$post = Post::get((int) $id);
}
// submit the form, delegation
$(document).on("submit", "form#form", function(event){
event.preventDefault();
var data = $("#form").serialize();
$.ajax({
url: "post_handler.php",
data: data,
type: "post",
success: function (response) {
// if the request is successful
alert(response);
},
error: function (xhr) {
// if the request is not successful
alert(xhr.responseText);
}
});
});
Я не могу понять, почему обновление сообщения работает нормально, но я не могу создавать новые записи, используя этот код. Когда я пытаюсь отправить новое сообщение, текстовое поле предупреждения становится пустым, а при обновлении отображается правильное сообщение «Успешно обновлено».
Что я делаю неправильно?
Спасибо.
Да, это. Я исправил, спасибо! Теперь он работает нормально.






"INSERT INTO mydb.Posts (title, body) values (?.?)";
Да, замените точку (.) на запятую (,), и код будет работать правильно.
Большое спасибо! Не могу поверить, что пропустил эту ошибку. Ты спасатель, сводил с ума.
точка опечатка?
values (?.?)