Я пытаюсь создать страницу, чтобы пользователи могли оставлять отзывы для книг. Я проверяю, что поля не пусты, имя пользователя существует в таблице users, а идентификатор книги существует в таблице книг. Если все это пройдет, я хочу ввести обзор в таблицу отзывов.пользовательский обзор не входит в базу данных с использованием PDO
В настоящее время, когда я заполняю форму и отправляю, я не получаю никакого вывода, никаких ошибок, просто пустой экран.
Вот код:
require_once __DIR__.'/config.php';
session_start();
$dbh = new PDO('mysql:host=' . DB_HOST . ';dbname=' . DB_USERNAME, DB_USERNAME, DB_PASSWORD);
$book = $_POST["book_id"];
$username = $_POST["user"];
$review = $_POST["review"];
$rating = $_POST["rating"];
if (empty($book) || empty($username) || empty($review) || empty($rating)) {
$error = "Complete all fields";
}
if ($rating > 5 || $rating < 0) {
$error = "Please enter a rating between 1 and 5";
}
if (!isset($error)){
//no error
$stmt = $dbh->prepare("SELECT username FROM users WHERE username = :user");
$stmt->bindParam(':user', $username);
$stmt->execute();
} else {
$error = "user does not exsist";
}
if (!isset($error)){
//no error
$stmt = $dbh->prepare("SELECT b_id FROM users WHERE b_id = :book_id");
$stmt->bindParam(':book_id', $book);
$stmt->execute();
} else {
$error = "Book does not exsist, please enter another ID";
}
if (!isset($error)) {
$sql = 'INSERT INTO reviews (book_id ,username, review, rating) VALUES (:book_id,:user,:review,:rating)';
$query = $dbh->prepare($sql);
$query->execute(array(
':book_id' => $book,
':user' => $username,
':review' => $review,
':rating' => $rating
));
} else {
echo "error occured: ".$error;
exit();
}
Я хочу проверки должны быть сделаны и информация, которая будет введена в базу данных, может кто-нибудь показать мне, как это сделать, пожалуйста?
Ваш код не появляется, чтобы генерировать какой-либо вывод в том случае, если не произошло никаких ошибок. Пробовали ли вы проверку таблицы 'review', чтобы увидеть, были ли вставлены новые записи? –
Да, его еще пустой набор. – stark
Рассмотрите возможность использования 'print_r ($ dbh-> errorInfo());' для отладки ваших запросов. Добавьте эту строку после каждой команды 'prepare' и поделитесь с нами выходом. –