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>
<.> 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.
prepare()
Ausführen: bind_param()
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>
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>
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>
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!