mysqli_stmt::bind_param

mysqli_stmt_bind_param

(PHP 5, PHP 7)

mysqli_stmt::bind_param -- mysqli_stmt_bind_paramBindet Variablen als Parameter an eine vorbereitete Anweisung (prepared statement)

Beschreibung

Objektorientierter Stil

public mysqli_stmt::bind_param ( string $types , mixed &$var1 [, mixed &$... ] ) : bool

Prozeduraler Stil

mysqli_stmt_bind_param ( mysqli_stmt $stmt , string $types , mixed &$var1 [, mixed &$... ] ) : bool

Bindet Variablen an die Parameterplatzhalter einer SQL-Anweisung, die an mysqli_prepare() übergeben worden ist.

Hinweis:

Wenn die Größe des Inhalts einer Variablen die maximal erlaubte Paketgröße (max_allowed_packet) überschreitet, dann muss b in types spezifiziert 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

stmt

Nur bei prozeduralem Aufruf: ein von mysqli_stmt_init() zurückgegebenes Statementobjekt.

types

Eine Zeichenkette, die eine oder mehrere Zeichen enthält, die die Typen der zu bindenden Variablen spezifizieren.

Typspezifizierer
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

var1

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. Im Fehlerfall wird FALSE zurückgegeben.

Beispiele

Beispiel #1 Objektorientierter Stil

<?php
$mysqli 
= new mysqli('localhost''my_user''my_password''world');

/* prüfe Verbindung */
if (mysqli_connect_errno()) {
    
printf("Verbindung fehlgeschlagen: %s\n"mysqli_connect_error());
    exit();
}

$stmt $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd'$code$language$official$percent);

$code 'DEU';
$language 'Bavarian';
$official "F";
$percent 11.2;

/* führe Anweisung aus */
$stmt->execute();

printf("%d Zeile eingefügt.\n"$stmt->affected_rows);

/* schließe Anweisung */
$stmt->close();

/* bereinige die Tabelle CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d Zeile gelöscht.\n"$mysqli->affected_rows);

/* schließe Verbindung */
$mysqli->close();
?>

Beispiel #2 Prozeduraler Stil

<?php
$link 
mysqli_connect('localhost''my_user''my_password''world');

/* prüfe Verbindung */
if (!$link) {
    
printf("Verbindung fehlgeschlagen: %s\n"mysqli_connect_error());
    exit();
}

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

/* führe Anweisung aus */
mysqli_stmt_execute($stmt);

printf("%d Zeile eingefügt.\n"mysqli_stmt_affected_rows($stmt));

/* schließe Anweisung */
mysqli_stmt_close($stmt);

/* bereinige die Tabelle CountryLanguage */
mysqli_query($link"DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d Zeile gelöscht.\n"mysqli_affected_rows($link));

/* schließe Verbindung */
mysqli_close($link);
?>

Die obigen Bespiele erzeugen folgende Ausgabe:

1 Row inserted.
1 Row deleted.

Siehe auch