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

publicmysqli_stmt::bind_param(string$types, mixed&$var, mixed&...$vars): bool

Prozeduraler Stil

mysqli_stmt_bind_param(
    mysqli_stmt$statement,
    string$types,
    mixed&$var,
    mixed&...$vars
): bool

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 in types 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
ZeichenBeschreibung
idie entsprechende Variable hat den Typ int
ddie entsprechende Variable hat den Typ float
sdie 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.

Fehler/Exceptions

If mysqli error reporting is enabled (MYSQLI_REPORT_ERROR) and the requested operation fails, a warning is generated. If, in addition, the mode is set to MYSQLI_REPORT_STRICT, a mysqli_sql_exception is thrown instead.

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);


$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));


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 (?, ?)");

$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

To Top