<?php
include('config.php');
if (isset($_POST['btn'])) {
if (isset($_POST['books'])) {
$b1 = implode(',' , $_POST['books']);
$sql = "INSERT INTO books(book_name) VALUES ('$b1)";
if($conn->query($sql)=== TRUE){
echo "your data is saved";
}else{
echo"try again".$conn->error;
}
$conn->close();?>
<form action="index.php" method="post">
<h3>Select your Books</h3>
<input type="checkbox" name="books[]" value="book1">Book 1
<input type="checkbox" name="books[]" value="book2">Book 2
<input type="checkbox" name="books[]" value="book3">Book 3
<input type="submit" name="btn">
</form>
я новичок в PHP, я пытаюсь вставить данные в БД, используя флажки, но ошибка появляется каждый раз
msgstr «есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования рядом с » book1, book2, book3) ‘в строке 1″
Измените строку: —
$sql = "INSERT INTO books(book_name) VALUES ('$b1)";
-------------------------------------------------^
missing single quote around the value
чтобы: —
$sql = "INSERT INTO books(book_name) VALUES ('$b1')";
$sql = "INSERT INTO books(book_name) VALUES ('$b1')";
Вы пропустили ни одной кавычки, но все же это плохая практика для запросов вставки, так как вы широко открыты для внедрения SQL. Скоро обновлю мой ответ об оптимизации вашего запроса, чтобы сделать его более безопасным для использования.
Подготовленное заявление Обновление
$stmt = $conn->prepare("INSERT INTO books(book_name) VALUES (?)");
$stmt->bind_param("s", $b1);
if ($stmt->execute()) {
echo "your data is saved";
}else{
echo"try again".$conn->error;
}
Этот запрос использует подготовленный оператор mysqli, защищающий вас от внедрения SQL. Как вы сказали, вы действительно новичок в php, поэтому лучше сначала изучить правильные пути. В разработке есть много способов сделать что-то, но не все из них верны, а некоторые оставляют вас открытыми для угроз. Вот отличный ответ от stackoverflow, чтобы взглянуть также.
попробуй этот код
<?php
include('config.php');
if (isset($_POST['btn'])) {
$b1 = implode(',' , $_POST['books']);
$sql = mysqli_query($conn,"INSERT INTO books(book_name) VALUES ('$b1')");
if($sql=== TRUE){
echo "your data is saved";
}else{
echo"try again".$conn->error;
}
}
$conn->close();
?>
<form action="index.php" method="post">
<h3>Select your Books</h3>
<input type="checkbox" name="books[]" value="book1">Book 1
<input type="checkbox" name="books[]" value="book2">Book 2
<input type="checkbox" name="books[]" value="book3">Book 3
<input type="submit" name="btn">
</form>