есть ошибка в вашем синтаксисе SQL;проверьте руководство, соответствующее вашей версии сервера MariaDB, чтобы найти правильный синтаксис для использования в первой строке - PullRequest
0 голосов
/ 04 июня 2018
<?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. Я пытаюсь вставить данные в БД, используя флажки, но ошибка появляется каждый раз, "в вашем синтаксисе SQL есть ошибка; проверьте руководство, соответствующее вашей версии сервера MariaDB, для:правильный синтаксис для использования рядом с '' book1, book2, book3) 'в строке 1 "

Ответы [ 3 ]

0 голосов
/ 04 июня 2018
$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, чтобы взглянуть также.

0 голосов
/ 04 июня 2018

попробуйте этот код

<?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>
0 голосов
/ 04 июня 2018

Измените строку: -

$sql = "INSERT INTO books(book_name) VALUES ('$b1)";
-------------------------------------------------^
             missing single quote around the value

на: -

$sql = "INSERT INTO books(book_name) VALUES ('$b1')";
...