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
Freigeben: 2024-12-16 02:50:11
Original
462 Leute haben es durchsucht

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
Nach dem Login kopieren

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 . "%";
Nach dem Login kopieren
  1. Bereiten Sie die Abfrage mit ? vor. als Platzhalter:
$stmt = $mysqli->prepare("SELECT * FROM REGISTRY where name LIKE ?");
Nach dem Login kopieren
  1. Binden Sie den Parameter an die vorbereitete Anweisung:
$stmt->bind_param("s", $likeVar);
Nach dem Login kopieren

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");
Nach dem Login kopieren

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!

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