Heim >Backend-Entwicklung >PHP-Tutorial >Wie verkettet man Variablen ordnungsgemäß mit vorbereiteten Anweisungen in SQL?

Wie verkettet man Variablen ordnungsgemäß mit vorbereiteten Anweisungen in SQL?

Linda Hamilton
Linda HamiltonOriginal
2024-12-16 02:50:11471Durchsuche

How to Properly Concatenate Variables with Prepared Statements in SQL?

Variablen mit vorbereiteten Anweisungen verketten

Bei der Verwendung vorbereiteter Anweisungen ist es wichtig, Variablen ordnungsgemäß mit der SQL-Abfrage zu verketten. Eine falsche Syntax kann zu Fehlern führen, wie sie beispielsweise in den folgenden Codefragmenten auftreten:

$sql = 'SELECT * FROM `users` WHERE username LIKE \'%{$var}%' '; // Error: Number of variables doesn't match number of parameters
$sql = 'SELECT * FROM `users` WHERE username LIKE %{?}% '; // Error: Wrong SQL

Der richtige Ansatz

Um diese Fehler zu vermeiden, führen Sie die folgenden Schritte aus:

  1. Verketten Sie Ihren Parameter mit Platzhaltern außerhalb des vorbereiteten Bereichs Anweisung:
$likeVar = "%" . $yourParam . "%";
  1. Bereiten Sie die Abfrage mit ? vor. als Platzhalter:
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
  1. Binden Sie den Parameter an die vorbereitete Anweisung:
$stmt->bind_param("s", $likeVar);

In diesem Beispiel enthält $likeVar den Wert, der sein soll mit Platzhaltern ("%...%") gesucht. Durch die Bindung an den Parametertyp s (String) wird sichergestellt, dass er in der Datenbankabfrage ordnungsgemäß behandelt wird.

Groß-/Kleinschreibung

Wenn Sie eine Suche ohne Berücksichtigung der Groß-/Kleinschreibung benötigen, können Sie die Klausel COLLATE utf8mb4_bin zu Ihrer hinzufügen Abfrage:

$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ? COLLATE utf8mb4_bin");

Das obige ist der detaillierte Inhalt vonWie verkettet man Variablen ordnungsgemäß mit vorbereiteten Anweisungen in SQL?. 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