Heim  >  Artikel  >  Backend-Entwicklung  >  So fragen Sie in PHP ab

So fragen Sie in PHP ab

王林
王林Original
2023-05-07 09:12:06864Durchsuche

Mit der Entwicklung der Internettechnologie sind Datenbanken zu einem wichtigen Mittel zur Datenspeicherung geworden. PHP ist eine weit verbreitete serverseitige Skriptsprache, die auch bei der Website-Entwicklung eine wichtige Rolle spielt. In PHP ist das Abfragen der Datenbank einer der häufigsten Vorgänge in der Entwicklung. In diesem Artikel wird daher erläutert, wie Abfragevorgänge in PHP ausgeführt werden.

1. Stellen Sie eine Verbindung zur Datenbank her.

Bevor wir Abfragevorgänge durchführen, müssen wir zuerst eine Verbindung zur Datenbank herstellen. PHP bietet eine integrierte Funktion mysqli_connect(), die zum Öffnen einer neuen Verbindung zum MySQL-Server verwendet wird. Diese Funktion muss Parameter wie Serveradresse, Benutzername, Passwort und Datenbankname übergeben. Der Beispielcode lautet wie folgt:

<?php
$servername = "localhost";
$username = "yourusername";
$password = "yourpassword";
$dbname = "yourdbname";

// 创建连接
$conn = mysqli_connect($servername, $username, $password, $dbname);

// 检测连接是否成功
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

Im obigen Code übergeben wir vier Parameter: Serveradresse, Benutzername, Passwort und Datenbankname. Wenn die Verbindung fehlschlägt, werden Fehlerinformationen über die Funktion mysqli_connect_error() ausgegeben. Bei erfolgreicher Verbindung wird „Verbindung erfolgreich hergestellt“ ausgegeben.

2. Führen Sie die Abfrageanweisung aus.

Nachdem die Verbindung erfolgreich war, können wir die Funktion mysqli_query() verwenden, um die Abfrageanweisung auszuführen. Es erfordert die Übergabe von zwei Parametern: dem Verbindungsobjekt und der auszuführenden SQL-Anweisung. Der Beispielcode lautet wie folgt:

<?php
$sql = "SELECT id, name, age FROM users";
$result = mysqli_query($conn, $sql);

if (mysqli_num_rows($result) > 0) {
    // 输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

// 关闭连接
mysqli_close($conn);
?>

Im obigen Code haben wir eine SELECT-Anweisung ausgeführt, um die Daten der ID-, Namens- und Altersspalten aus der Benutzertabelle abzufragen. Wir verwenden die Funktion mysqli_query(), um die Anweisung auszuführen und das Ergebnis in $result zu speichern. Wenn die Daten abgefragt werden, werden die Daten in der Ergebnismenge Zeile für Zeile durch die Funktion mysqli_fetch_assoc() gelesen und auf der Seite ausgegeben. Werden keine Daten gefunden, wird „0 Ergebnisse“ ausgegeben. Abschließend schließen wir die Verbindung mit der Funktion mysqli_close().

3. SQL-Injection verhindern

Obwohl der grundlegende Abfragevorgang im obigen Beispiel abgeschlossen wurde, müssen wir aufgrund der Existenz von SQL-Injection bei der tatsächlichen Entwicklung vorsichtiger sein . PHP bietet einige Funktionen, um SQL-Injection-Angriffe zu verhindern.

  1. mysqli_real_escape_string()-Funktion

Diese Funktion wird verwendet, um Sonderzeichen in SQL-Abfragen wie einfache Anführungszeichen, doppelte Anführungszeichen usw. zu maskieren. Wir können diese Funktion verwenden, um die Eingabedaten zu maskieren, bevor der Abfragevorgang ausgeführt wird, um zu verhindern, dass böswillige Benutzer SQL-Injection-Code übergeben. Der Beispielcode lautet wie folgt:

<?php
$name = mysqli_real_escape_string($conn, $_POST['name']);
$sql = "SELECT * FROM users WHERE name='$name'";
$result = mysqli_query($conn, $sql);

if ($result) {
    // 输出数据
    while($row = mysqli_fetch_assoc($result)) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

// 关闭连接
mysqli_close($conn);
?>

Im obigen Code verwenden wir die Funktion mysqli_real_escape_string(), um den vom Benutzer eingegebenen $namen zu maskieren. Beim Erstellen der Abfrageanweisung wird der maskierte $name in die SQL-Anweisung eingefügt, um SQL-Injection-Angriffe zu vermeiden.

  1. Vorbereitete Anweisungen

In PHP können wir auch vorbereitete Anweisungen verwenden, um SQL-Injection-Angriffe zu vermeiden. Eine vorbereitete Anweisung besteht darin, vor der Ausführung der SQL-Anweisung einen Vorverarbeitungsbefehl an die Datenbank zu senden, um der Datenbank die Struktur und den Datentyp der auszuführenden SQL-Anweisung mitzuteilen. Anschließend werden die Abfrageparameter zusammen mit der vorbereiteten Anweisung an die Datenbank gesendet, um SQL-Injection-Angriffe zu vermeiden. Der Beispielcode lautet wie folgt:

<?php
$stmt = $conn->prepare("SELECT * FROM users WHERE name=?");
$stmt->bind_param("s", $name);

$name = mysqli_real_escape_string($conn, $_POST['name']);
$stmt->execute();
$result = $stmt->get_result();

if ($result->num_rows > 0) {
    // 输出数据
    while($row = $result->fetch_assoc()) {
        echo "id: " . $row["id"]. " - Name: " . $row["name"]. " - Age: " . $row["age"]. "<br>";
    }
} else {
    echo "0 results";
}

// 关闭连接
$stmt->close();
$conn->close();
?>

Im obigen Code haben wir zuerst die vorbereitete Anweisung mit der Funktion $conn->prepare() erstellt und sie mit der Funktion $stmt->bind_param( gebunden. ) Funktionsparameter. Bevor wir den Abfragevorgang ausführen, maskieren wir den vom Benutzer eingegebenen $namen und weisen ihn der Variablen $s im Bindungsparameter zu. Schließlich verwenden wir die Funktion $stmt->execute(), um die vorbereitete Anweisung auszuführen, und die Funktion $stmt->get_result(), um die Abfrageergebnisse abzurufen und so den Abfragevorgang abzuschließen.

4. Fazit

Das Abfragen der Datenbank in PHP ist ein sehr häufiger Vorgang, aber aufgrund der Existenz von SQL-Injection-Angriffen müssen wir vorsichtiger sein. In der tatsächlichen Entwicklung führen wir Abfragevorgänge normalerweise in Verbindung mit den oben eingeführten Anti-Injection-Maßnahmen durch. Ich hoffe, dieser Artikel kann bei der Abfrage von Vorgängen in der PHP-Entwicklung hilfreich sein.

Das obige ist der detaillierte Inhalt vonSo fragen Sie in PHP ab. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Vorheriger Artikel:PHP kann HTML nicht sehenNächster Artikel:PHP kann HTML nicht sehen