Heim > Datenbank > MySQL-Tutorial > Wie kann ich PHP-Variablen sicher in MySQL-Anweisungen einbetten?

Wie kann ich PHP-Variablen sicher in MySQL-Anweisungen einbetten?

Mary-Kate Olsen
Freigeben: 2025-01-25 16:56:10
Original
372 Leute haben es durchsucht

How to Safely Embed PHP Variables in MySQL Statements?

Eingebettete PHP -Variablen in MySQL Anweisung

Verbessert die SQL -Anweisung mit PHP -Variablen kann dynamisch Abfrage erzeugen. Das Folgende ist das Problem, auf das Sie gestoßen sind:

Um diesen Fehler zu lösen, folgen Sie bitte der folgenden Anleitung:
<code class="language-php">$type = 'testing';
mysql_query("INSERT INTO contents (type, reporter, description) 
     VALUES($type, 'john', 'whatever')");</code>
Nach dem Login kopieren

<.> 1. Verwenden Sie die Vorverarbeitungserklärung

Alle Variablen, die SQL -Text (Zeichenfolge, Zahlen) in der Anweisung angeben, sind obligatorisch. Das Folgende ist der Workflow:

Nutzungsangehörige Einwohner:

Die Variablen werden in der SQL -Abfrage an das Platzierungssymbol ersetzt.

    Abfragen bereit:
  • Verwenden Sie die -Methode im Datenbankverbindungsobjekt.
  • Binden Sie Variablen:
  • Verwenden Sie , um mit dem variablen Wert zu assoziieren. prepare() Ausführen:
  • Verwenden Sie
  • Vorab -Abfrage aus. bind_param() in MySQLI (Php 8.2):
  • in MySQLI (die ältere PHP -Version): execute()

in PDO:

<code class="language-php">$type = 'testing';
$reporter = "John O'Hara";
$description = 'whatever'; //添加了description变量
$sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $type, $reporter, $description); //修改了参数类型和数量
$stmt->execute();</code>
Nach dem Login kopieren
Nach dem Login kopieren
<.> 2. Implementieren Sie eine Whitelist -Filterung

Für Abfrageteile wie Schlüsselwörter, Kennung oder Operatoren verwenden Sie bitte die weiße Listenmethode. Filtern Sie diese Variablen durch die vordefinierte zulässige Werteliste:

<code class="language-php">$type = 'testing';
$reporter = "John O'Hara";
$description = 'whatever'; //添加了description变量
$sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量
$stmt = $mysqli->prepare($sql);
$stmt->bind_param("sss", $type, $reporter, $description); //修改了参数类型和数量
$stmt->execute();</code>
Nach dem Login kopieren
Nach dem Login kopieren

Stellen Sie sicher, dass Sie die Kennung gemäß der Datenbanksyntax korrekt formatieren (z. B. die Anti -Attraktionsnummer von MySQL). Dann ist diese Variable sicher in der SQL -Zeichenfolge enthalten:

Filtern Sie die Vorverarbeitungserklärung und eine Whitelist, Sie können SQL effektiv daran hindern, Angriffe zu injizieren und PHP -Variablen sicher in Ihre MySQL -Abfrage zu integrieren. Bitte beachten Sie, dass die
<code class="language-php">$type = 'testing';
$reporter = "John O'Hara";
$description = 'whatever'; //添加了description变量
$sql = "INSERT INTO contents (type,reporter,description) VALUES (?,?,?)"; //修改了占位符数量
$stmt = $pdo->prepare($sql);
$stmt->execute([$type, $reporter, $description]); //修改了参数数量</code>
Nach dem Login kopieren
-Funktion aufgegeben wurde. Der Code wurde beispielsweise aktualisiert, um dies zu reflektieren und die Fehler im ursprünglichen Beispiel zu reparieren.

Das obige ist der detaillierte Inhalt vonWie kann ich PHP-Variablen sicher in MySQL-Anweisungen einbetten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage