mysqli_stmt_execute() erwartet parameter 1 zu mysqli_stmt,

Hallo ich bin in der Notwendigkeit etwas Hilfe. Ich bin versucht derzeit, erstellen Sie eine Seite suchen, in denen ein Benutzer ist in der Lage, die Suche nach einem bestimmten Buch mit dem Titel das Buch, Kategorie, Jahr und Verlag

Ich habe meine grundlegende HTML-Suchformular und das ist der folgende code:

<!DOCTYPE html>

<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Page Title</title>
</head>
<body>
<form id ="SearchPage" action="SearchPage.php" method="get">
<h1> Search Page</h1>

    Book Title <input type="text" name="bookTitle" />

    Category <select name="catDesc">
                <option value = "Business & Commerce">Business & Commerce</option>
                <option value = "Databases">Databases</option>
                <option value = "Databases and Web Development">Databases and Web Development</option>
                <option value = "Fiction">Fiction</option>
                <option value = "Flex & Flash Programming">Flex & Flash Programming</option>
                <option value = "Netorks">Netorks</option>
                <option value = "Programming">Programming</option>
                <option value = "Systems Design">Systems Design</option>
                <option value = "Web Development">Web Development</option>
            </select>



    Publisher <input type="text" name="pubName"/>

    Year <input type="text" name="bookYear"/>

    <input type ="submit" value-"Find Books"/>

</form>
</body>
</html>

- Und das ist der php-code habe ich unten getan:

<!DOCTYPE HTML>
<html>
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1252">
    <title>Search Page</title>
</head>
<body>
    <table>
     <tr>
     <th>Book Title</th>
     <th>Year</th>
     <th>Category</th>
     <th>Publisher</th>
     </tr>
<?php

include 'database_mysqli_conn.php';

$bookTitle = $_REQUEST['bookTitle'];
$bookYear =$_REQUEST['bookYear'];
$catDesc =$_REQUEST['catDesc'];
$pubName =$_REQUEST['pubName'];

$sql = "SELECT bookTitle, bookYear, catDesc, pubName, FROM nbc_book b inner join nbc_category c on b.catID = c.catID inner join nbc_publisher p on b.pubID = p.pubID WHERE 1";

$stmt = mysqli_prepare($conn, $sql);
    mysqli_stmt_execute($stmt);
    mysqli_stmt_bind_result($stmt, $bookTitle, $bookYear, $bookPrice, $catDesc);

if (!empty($bookTitle)) {

    $sql= $sql." AND bookTitle = '$bookTitle'";

    }

if (!empty($bookYear)) {

    $sql= $sql." AND bookYear = '$bookYear'";

}

if (!empty($catDesc)) {

    $sql= $sql." AND catDesc = '$catDesc'";

}

if (!empty($pubName)) {

    $sql= $sql." AND pubName = '$pubName'";

}

while (mysqli_stmt_fetch($stmt)){
    echo "<tr>
                <td>$bookTitle</td>
                <td>$bookYear</td>
                <td>$catDesc</td>
                <td>$pubName</td>
             </tr>";
}

mysqli_stmt_close($stmt);
mysqli_close($conn);

?>

</body>
</html>

das problem ist, das ist die Fehlermeldung die ich erhalte, wenn ich behaupte, dass die Suche nach:

Achtung: mysqli_stmt_execute() erwartet parameter 1 zu mysqli_stmt, boolean given in /home/unn_w11036829/public_html/PHPexercises/SearchPage.php on line 27

Achtung: mysqli_stmt_bind_result() erwartet parameter 1 zu mysqli_stmt, boolean given in /home/unn_w11036829/public_html/PHPexercises/SearchPage.php auf der Linie 28

Achtung: mysqli_stmt_fetch() erwartet parameter 1 zu mysqli_stmt, boolean given in /home/unn_w11036829/public_html/PHPexercises/SearchPage.php on line 54

Achtung: mysqli_stmt_close() erwartet parameter 1 zu mysqli_stmt, boolean given in /home/unn_w11036829/public_html/PHPexercises/SearchPage.php on line 63
Titel, Jahr, Kategorie, Verlag

Kann jemand bitte sagen Sie mir, wohin ich gehe falsch! Habe ich fest auf diesem für die vergangene Stunde und die Fahrt mich verrückt.

Danke im Voraus

Sie haben ein Komma vor dem AUS in der Abfrage.
WARNING: Bei Verwendung mysqli Sie sollten mit parametrisierten Abfragen und bind_param, um Benutzer-Daten zu Ihrer Anfrage. NICHT die Verwendung von string-interpolation um dies zu erreichen, weil Sie gravierende SQL-injection-bugs. Es ist erwähnenswert, dass PDO und benannte Platzhalter macht diese Art der bedingten Zusammensetzung viel einfacher.
ach ich Dummerchen. es ist immer das kleinste Ding 🙁 Danke

InformationsquelleAutor IvanGakev | 2014-11-21

Schreibe einen Kommentar