mysqli_stmt::bind_param
mysqli_stmt_bind_param
(PHP 5, PHP 7, PHP 8)
mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Bindet Variablen als Parameter an eine vorbereitete Anweisung (prepared statement)
Beschreibung
Objektorientierter Stil
Prozeduraler Stil
Bindet Variablen an die Parameter-Platzhalter einer SQL-Anweisung, die mit mysqli_prepare() oder mysqli_stmt_prepare() vorbereitet wurde.
Hinweis:
Wenn die Größe des Inhalts einer Variablen die maximal erlaubte Paketgröße (max_allowed_packet) überschreitet, dann muss
b
intypes
angegeben werden und mysqli_stmt_send_long_data() verwendet werden, um die Daten paketweise zu verschicken.
Hinweis:
Vorsicht, wenn mysqli_stmt_bind_param() zusammen mit call_user_func_array() verwendet werden soll. mysqli_stmt_bind_param() erfordert, dass die Parameter als Referenzvariablen übergeben werden, wohingegen call_user_func_array() als Parameter eine Liste von Variablen akzeptiert, die sowohl Referenzen als auch Werte sein können.
Parameter-Liste
-
statement
-
Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebenes mysqli_stmt-Objekt.
-
types
-
Eine Zeichenkette, die ein oder mehrere Zeichen enthält, die die Typen der zu bindenden Variablen spezifizieren.
Zeichen für die Typangabe Zeichen Beschreibung i die entsprechende Variable hat den Typ integer d die entsprechende Variable hat den Typ double s die entsprechende Variable hat den Typ string b die entsprechende Variable ist ein BLOB und wird paketweise geschickt -
var
-
vars
-
Die Anzahl der Variablen und die Länge der Zeichenkette
types
müssen zu den Parametern in der Anweisung passen.
Rückgabewerte
Gibt bei Erfolg true
zurück. Bei einem Fehler wird false
zurückgegeben.
Beispiele
Beispiel #1 mysqli_stmt::bind_param()-Beispiel
Objektorientierter Stil
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
$stmt->execute();
printf("Datenätze eingefügt: %d.\n", $stmt->affected_rows);
/* bereinige die Tabelle CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("Datensätze gelöscht: %d.\n", $mysqli->affected_rows);
Prozeduraler Stil
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
mysqli_stmt_execute($stmt);
printf("Datenätze eingefügt: %d.\n", mysqli_stmt_affected_rows($stmt));
/* bereinige die Tabelle CountryLanguage */
mysqli_query($link, "DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("Datensätze gelöscht: %d.\n", mysqli_affected_rows($link));
Die obigen Bespiele erzeugen folgende Ausgabe:
Datensätze eingefügt: 1. Datensätze gelöscht: 1.
Beispiel #2 Argumente mittels ...
übergeben
Der Operator ...
kann verwendet werden, um eine Liste
von Argumenten mit variabler Länge zu übergeben, z. B. in einer
WHERE IN
-Bedingung.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("SELECT Language FROM CountryLanguage WHERE CountryCode IN (?, ?)");
/* Argumente mittels ... übergeben */
$stmt->bind_param('ss', ...['DEU', 'POL']);
$stmt->execute();
$stmt->store_result();
printf("%d Datensätze gefunden.\n", $stmt->num_rows());
Die obigen Bespiele erzeugen folgende Ausgabe:
10 Datensätze gefunden.
Siehe auch
- mysqli_stmt_bind_result() - Bindet Variablen an eine vorbereitete Anweisung (prepared statement), um das Ergebnis einer Abfrage abzulegen
- mysqli_stmt_execute() - Executes a prepared statement
- mysqli_stmt_fetch() - Fetch results from a prepared statement into the bound variables
- mysqli_prepare() - Prepares an SQL statement for execution
- mysqli_stmt_send_long_data() - Sendet Daten blockweise
- mysqli_stmt_errno() - Returns the error code for the most recent statement call
- mysqli_stmt_error() - Returns a string description for last statement error