Einrichten eines Suchsystems mit PHP und MySQL

Habdul Hazeez 15 Februar 2024
  1. Einrichten einer Datenbank
  2. Erstellen Sie den HTML-Code
  3. Erstellen Sie den PHP-Code
Einrichten eines Suchsystems mit PHP und MySQL

In diesem Tutorial lernen Sie, ein Suchsystem mit PHP und MySQL zu erstellen. Sie erfahren, wie Sie HTML, die MySQL-Datenbank und das PHP-Backend einrichten. Im PHP-Code lernen Sie, eine vorbereitete Anweisung mit dem LIKE-Operator in SQL zu verwenden.

Einrichten einer Datenbank

Laden Sie den XAMPP-Server herunter und installieren Sie ihn. Es kommt mit MySQL. Starten Sie die Shell in der XAMPP-Systemsteuerung. Melden Sie sich mit dem folgenden Befehl bei der MySQL-Shell an:

# This login command assumes that the
# password is empty and the user is "root"
mysql -u root -p

Verwenden Sie die folgende SQL-Abfrage, um eine Datenbank namens fruit_db zu erstellen.

CREATE database fruit_db;

Ausgabe:

Query OK, 1 row affected (0.001 sec)

Sie benötigen Beispieldaten, die Sie verwenden können. Führen Sie also das folgende SQL auf der Datenbank fruit_db aus:

CREATE TABLE fruit
(id INT NOT NULL AUTO_INCREMENT,
 name VARCHAR(20) NOT NULL,
 color VARCHAR(20) NOT NULL,
 PRIMARY KEY (id))
 ENGINE = InnoDB;

Ausgabe:

Query OK, 0 rows affected (0.028 sec)

Überprüfen Sie die Struktur der Tabelle:

DESC fruit;

Ausgabe:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(20) | NO   |     | NULL    |                |
| color | varchar(20) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+

Sobald die Tabelle eingerichtet ist, verwenden Sie die folgende SQL, um Beispieldaten einzufügen:

INSERT INTO fruit (id, name, color) VALUES (NULL, 'Banana', 'Yellow'), (NULL, 'Pineapple', 'Green')

Ausgabe:

Query OK, 2 rows affected (0.330 sec)
Records: 2  Duplicates: 0  Warnings: 0

Bestätigen Sie die Datenexistenz mit dem folgenden SQL:

SELECT * FROM fruit;

Ausgabe:

+----+-----------+--------+
| id | name      | color  |
+----+-----------+--------+
|  1 | Banana    | Yellow |
|  2 | Pineapple | Green  |
+----+-----------+--------+

Erstellen Sie den HTML-Code

Der HTML-Code für das Suchsystem ist ein HTML-Formular. Das Formular hat eine einzige Formulareingabe und einen submit-Button. Ein required-Attribut in der Formulareingabe sorgt dafür, dass die Benutzer etwas in das Formular eingeben.

Der nächste Codeblock ist der HTML-Code für das Suchformular.

<main>
	<form action="searchdb.php" method="post">
		<input
			type="text"
			placeholder="Enter your search term"
			name="search"
			required>
		<button type="submit" name="submit">Search</button>
	</form>
</main>

Das folgende CSS macht das Formular präsentabler.

* {
	margin: 0;
	padding: 0;
	box-sizing: border-box;
}

body {
	display: grid;
	align-items: center;
	place-items: center;
	height: 100vh;
}

main {
	width: 60%;
	border: 2px solid #1560bd;
	padding: 2em;
	display: flex;
	justify-content: center;
}

input,
button {
	padding: 0.2em;
}

Der HTML-Code sollte wie das nächste Bild in Ihrem Webbrowser aussehen.

php in mysql suchen - HTML-Suchformular

Erstellen Sie den PHP-Code

Der PHP-Code verarbeitet die Formularübermittlung. Hier ist eine Zusammenfassung, wie der Code funktioniert:

  1. Prüfen Sie das übermittelte Formular des Benutzers.
  2. Verbinden Sie sich mit der Datenbank.
  3. Maskieren Sie die Suchzeichenfolge und schneiden Sie alle weißen Bereiche ab.
  4. Prüfen Sie auf ungültige Zeichen wie < oder - (ohne Anführungszeichen).
  5. Führen Sie die Suche über eine vorbereitete Anweisung durch.
  6. Geben Sie die Ergebnisse zurück.

Der nächste Codeblock ist der vollständige PHP-Code zur Durchführung der Suche. Speichern Sie den Code in einer Datei namens searchdb.php.

<?php
    if (isset($_POST['submit'])) {
        // Connect to the database
        $connection_string = new mysqli("localhost", "root", "", "fruit_db");
        
        // Escape the search string and trim
        // all whitespace
        $searchString = mysqli_real_escape_string($connection_string, trim(htmlentities($_POST['search'])));

        // If there is a connection error, notify
        // the user, and Kill the script.
        if ($connection_string->connect_error) {
            echo "Failed to connect to Database";
            exit();
        }

        // Check for empty strings and non-alphanumeric
        // characters.
        // Also, check if the string length is less than
        // three. If any of the checks returns "true",
        // return "Invalid search string", and
        // kill the script.
        if ($searchString === "" || !ctype_alnum($searchString) || $searchString < 3) {
            echo "Invalid search string";
            exit();
        }

        // We are using a prepared statement with the
        // search functionality to prevent SQL injection.
        // So, we need to prepend and append the search
        // string with percent signs
        $searchString = "%$searchString%";

        // The prepared statement
        $sql = "SELECT * FROM fruit WHERE name LIKE ?";

        // Prepare, bind, and execute the query
        $prepared_stmt = $connection_string->prepare($sql);
        $prepared_stmt->bind_param('s', $searchString);
        $prepared_stmt->execute();

        // Fetch the result
        $result = $prepared_stmt->get_result();

        if ($result->num_rows === 0) {
            // No match found
            echo "No match found";
            // Kill the script
            exit();

        } else {
            // Process the result(s)
            while ($row = $result->fetch_assoc()) {
                echo "<b>Fruit Name</b>: ". $row['name'] . "<br />";
                echo "<b>Fruit Color</b>: ". $row['color'] . "<br />";

            } // end of while loop
        } // end of if($result->num_rows)

    } else { // The user accessed the script directly

        // Tell them nicely and kill the script.
        echo "That is not allowed!";
        exit();
    }
?>

Das nächste Bild enthält das Ergebnis für den Suchbegriff pine. Es gibt die Frucht pineapple und ihre Farbe zurück.

search php in mysql - Suchergebnis für die Zeichenfolge pine

Habdul Hazeez avatar Habdul Hazeez avatar

Habdul Hazeez is a technical writer with amazing research skills. He can connect the dots, and make sense of data that are scattered across different media.

LinkedIn

Verwandter Artikel - PHP MySQL