<?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>

Jestem początkującego w PHP Próbuję wstawić dane w DB za pomocą pola wyboru, ale błąd pojawia się za każdym razem "Wymagaj błędu w składni SQL; zaznacz instrukcję, która odpowiada wersji serwera MariaDB dla właściwej składni do użycia w pobliżu "Book1, Book2, Book3) 'AT LINE 1"

0
Atif Raja 4 czerwiec 2018, 12:55

3 odpowiedzi

Najlepsza odpowiedź

Zmień linię: -

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

Do:-

$sql = "INSERT INTO books(book_name) VALUES ('$b1')";
-1
nandal 4 czerwiec 2018, 09:59
$sql = "INSERT INTO books(book_name) VALUES ('$b1')"; 

Brakowałeś pojedynczego cytatu, ale nadal jest to zła praktyka do wstawiania zapytań, ponieważ jesteś szeroko otwarty na wstrzyknięcie SQL. Zaktualizuje moją odpowiedź wkrótce o optymalizacji zapytania, aby była bardziej bezpieczna.

Przygotowany aktualizacja oświadczenia

$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;
}

To zapytanie korzysta z przygotowanego oświadczenia MySQLI, zabezpieczając Cię z wtrysku SQL. Jak powiedziałeś, że jesteś naprawdę nowy w PHP, więc lepiej dowiedzieć się poprawnych sposobów od samego początku. W rozwoju istnieje wiele sposobów na robienie rzeczy, ale nie wszystkie z nich mają rację, a niektórzy zostawiają cię otwarte na zagrożenia. Oto świetna odpowiedź od stackoverflow, aby zobaczyć również wygląd. .

2
pr1nc3 4 czerwiec 2018, 11:50

Wypróbuj ten kod

<?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>
-1
sam 4 czerwiec 2018, 10:43