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.
Erstellen Sie den PHP-Code
Der PHP-Code verarbeitet die Formularübermittlung. Hier ist eine Zusammenfassung, wie der Code funktioniert:
- Prüfen Sie das übermittelte Formular des Benutzers.
- Verbinden Sie sich mit der Datenbank.
- Maskieren Sie die Suchzeichenfolge und schneiden Sie alle weißen Bereiche ab.
- Prüfen Sie auf ungültige Zeichen wie
<
oder-
(ohne Anführungszeichen). - Führen Sie die Suche über eine vorbereitete Anweisung durch.
- 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.
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