Aktueller Standort: Startseite> Neueste Artikel> Wie kann man gemeinsame Parametertypen in MySQLI_STMT :: BIND_PARAM -Funktion verstehen? Umfassende Beschreibung und Beispiele

Wie kann man gemeinsame Parametertypen in MySQLI_STMT :: BIND_PARAM -Funktion verstehen? Umfassende Beschreibung und Beispiele

gitbox 2025-08-29

Wie kann man gemeinsame Parametertypen in MySQLI_STMT :: BIND_PARAM -Funktion verstehen? Umfassende Beschreibung und Beispiele

Bei der Verwendung von PHP für Datenbankoperationen ist die Funktion mySQLI_STMT :: BIND_PARAM () ein sehr wichtiges Tool, das Parameter an SQL -Abfrageanweisungen binden und SQL -Injektionsangriffe vermeiden kann. Diese Funktion ist besonders für Vorverarbeitungsanweisungen geeignet, und der Parametertyp gibt an, wie die an die Abfrage übergebenen Werte behandelt werden. Dieser Artikel enthält eine detaillierte Beschreibung der gemeinsamen Parametertypen für die Funktion von MySQLI_STMT :: BIND_PARAM () und verwendet Beispiele, um zu verstehen, wie sie in der tatsächlichen Entwicklung verwendet werden.

Grundlegende Syntax von MySQLI_STMT :: BIND_PARAM

Lassen Sie uns zunächst die grundlegende Syntax der Funktion bind_param () überprüfen:

 <span><span><span class="hljs-keyword">bool</span></span><span> mysqli_stmt::</span><span><span class="hljs-variable constant_">bind_param</span></span><span> ( </span><span><span class="hljs-keyword">string</span></span><span> </span><span><span class="hljs-variable">$types</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> &amp;</span><span><span class="hljs-variable">$var</span></span><span> , </span><span><span class="hljs-keyword">mixed</span></span><span> &amp;$... )
</span></span>
  • $ Typen : Eine Zeichenfolge, die ein oder mehrere Zeichen enthält, die den Typ der gebundenen Variablen darstellen. Jedes Zeichen repräsentiert den Typ eines Parameters.

  • $ var, $ ... : Dies sind die Variablen, die Sie binden möchten, und sie werden in der in $ Typen angegebenen Reihenfolge gebunden.

Wobei jedes Zeichen in der Zeichenfolge $ Typen einen Datentyp darstellt. Gemeinsame Arten von Zeichen sind:

  • I : repräsentiert eine Ganzzahl.

  • D : stellt die doppelte Präzisionsschwimmnummer dar (doppelt).

  • S : Repräsentiert String.

  • B : Daten, die Blob -Typ (binärer großes Objekt) darstellen.

Detaillierte Beschreibung der gemeinsamen Parametertypen

1. I : Ganzzahltyp

Ich wird verwendet, um ganzzahlige Parameter zu binden. Es ist einer der häufigsten Typen und für alle ganzzahligen Daten geeignet.

Beispiel:

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE id = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"i"</span></span><span>, </span><span><span class="hljs-variable">$id</span></span><span>); </span><span><span class="hljs-comment">// $idEs ist eine Ganzzahl</span></span><span>
</span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>

In diesem Beispiel ist $ id als ganzzahliger Typ an den Platzhalter in der Abfrageerklärung gebunden ? .

2. D : Doppelpräzisionsschwimmernummer Typ

D wird verwendet, um Parameter des doppelten Precision-Gleitnummerntyps zu binden, der normalerweise in Abfragen mit Dezimal- oder Schwimmpunktzahlen verwendet wird.

Beispiel:

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO products (price) VALUES (?)"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"d"</span></span><span>, </span><span><span class="hljs-variable">$price</span></span><span>); </span><span><span class="hljs-comment">// $priceEs ist eine doppelte Präzisionsschwimmnummer</span></span><span>
</span><span><span class="hljs-variable">$price</span></span><span> = </span><span><span class="hljs-number">199.99</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>

In diesem Beispiel ist $ Price an einen Platzhalter in der SQL-Erklärung als doppelter Präzisionsschwimmnummer gebunden.

3. S : String -Typ

S ist einer der häufigsten Typen für Bindungsparameter. Unabhängig davon, ob es sich um Textdaten oder Zeichenfolgen in numerischer Form handelt, ist S erforderlich.

Beispiel:

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"SELECT * FROM users WHERE username = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"s"</span></span><span>, </span><span><span class="hljs-variable">$username</span></span><span>); </span><span><span class="hljs-comment">// $usernameEs ist eine Zeichenfolge</span></span><span>
</span><span><span class="hljs-variable">$username</span></span><span> = </span><span><span class="hljs-string">"john_doe"</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>

In diesem Beispiel ist $ userername an einen String -Typ gebunden und die Abfrage sucht nach dem entsprechenden Benutzer über den Benutzernamen.

4. B : binärer Datentyp

B wird verwendet, um Binärdaten wie BLOB -Typdaten wie Bilder oder Dateien zu binden. Dieser Typ wird häufig verwendet, um große Datenvolumina oder binäre Dateien zu verarbeiten.

Beispiel:

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"INSERT INTO images (image_data) VALUES (?)"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"b"</span></span><span>, </span><span><span class="hljs-variable">$imageData</span></span><span>); </span><span><span class="hljs-comment">// $imageDataEs sind binäre Daten</span></span><span>
</span><span><span class="hljs-variable">$imageData</span></span><span> = </span><span><span class="hljs-title function_ invoke__">file_get_contents</span></span><span>(</span><span><span class="hljs-string">"path/to/image.jpg"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>

In diesem Beispiel ist $ Imagedata als Binärdaten an die Abfrageanweisung gebunden, die normalerweise zum Einfügen von Dateidaten verwendet wird.

Mehrere Bindungen von Parametertypen

Wenn es in einer SQL -Anweisung mehrere Platzhalter gibt, kann Bind_param () mehrere Variablen binden, und der Typ jeder Variablen wird durch Zeichen in $ Typen dargestellt, und die Reihenfolge muss mit dem Platzhalter übereinstimmen.

Beispiel:

 <span><span><span class="hljs-variable">$stmt</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">prepare</span></span><span>(</span><span><span class="hljs-string">"UPDATE users SET name = ?, age = ? WHERE id = ?"</span></span><span>);
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">bind_param</span></span><span>(</span><span><span class="hljs-string">"ssi"</span></span><span>, </span><span><span class="hljs-variable">$name</span></span><span>, </span><span><span class="hljs-variable">$age</span></span><span>, </span><span><span class="hljs-variable">$id</span></span><span>); 
</span><span><span class="hljs-variable">$name</span></span><span> = </span><span><span class="hljs-string">"Alice"</span></span><span>;
</span><span><span class="hljs-variable">$age</span></span><span> = </span><span><span class="hljs-number">30</span></span><span>;
</span><span><span class="hljs-variable">$id</span></span><span> = </span><span><span class="hljs-number">1</span></span><span>;
</span><span><span class="hljs-variable">$stmt</span></span><span>-&gt;</span><span><span class="hljs-title function_ invoke__">execute</span></span><span>();
</span></span>

In diesem Beispiel ist $ name an eine Zeichenfolge gebunden, $ Age ist an eine Ganzzahl ( i ) gebunden, und $ id ist an eine Ganzzahl gebunden ( i ). Der Parameter $ Typen ist "SSI" , was mit der Typordnung der drei Platzhalter übereinstimmt.

Dinge zu beachten

  1. Geben Sie eine strenge Übereinstimmung ein: Wenn Sie Bind_param () aufrufen, müssen Sie sicherstellen, dass der gebundene variable Typ streng dem in der Zeichenfolge $ Type angegebenen Typ übereinstimmt, andernfalls führt dies zu einem Fehler oder einem unerwarteten Ergebnis.

  2. Übergeben von Referenzen auf Werte : Bind_param () erfordert das Übergeben von Verweise auf Parameter, nicht auf Werte. Wenn Sie Werte direkt anstelle von Referenzen übergeben, wird die Funktion diese Parameter nicht korrekt behandelt.

  3. Korrelation zwischen dem Parametertyp und dem Datenbanktyp : In der tatsächlichen Verwendung sollte der gebundene Parametertyp basierend auf dem Datentyp des Feldes in der Datenbanktabelle ermittelt werden. Wenn das Datenbankfeld vom Typ schwimmender Number ist, verwenden Sie d ; Wenn es sich um einen String -Typ handelt, verwenden Sie s .

Zusammenfassen

MySQLI_STMT :: BIND_PARAM () ist eine sehr wichtige Funktion, um die SQL -Injektion zu verhindern und SQL -Abfrageparameter zu verarbeiten. Durch die korrekte Verwendung seiner Parametertypen können wir sicherstellen, dass Datenbankvorgänge sicherer und effizienter sind. In der tatsächlichen Entwicklung verbessert das Verständnis und die korrekte Verwendung dieser Arten von Zeichen die Wartbarkeit und Sicherheit des Codes erheblich.

Zu den häufigen Typen gehören Ganzzahlen ( i ), doppelte Präzisionsschwimmzahlen ( D ), Zeichenfolgen ( en ) und binäre Daten ( B ). Bei der Behandlung komplexer Datenbankvorgänge stellt die korrekte Bindung des Typs jedes Parameters sicher, dass die Abfrageanweisung wie erwartet ausgeführt wird und die Daten vor potenziellen SQL -Injektionsangriffen schützt.