mysqli_stmt::bind_param
, mysqli_stmt_bind_param
mysqli_stmt::bind_param
mysqli_stmt_bind_param
Binds variables to a prepared statement as parameters
Description
Object oriented stylebool mysqli_stmt::bind_param(string types,
mixed var1,
mixed ...);
Procedural stylebool mysqli_stmt_bind_param(mysqli_stmt stmt,
string types,
mixed var1,
mixed ...);
Bind variables for the parameter markers in the SQL statement that was passed to mysqli_prepare
.Note
If data size of a variable exceeds max. allowed packet size (max_allowed_packet), you have to specify b
in types
and use mysqli_stmt_send_long_data
to send the data in packets.Note
Care must be taken when using mysqli_stmt_bind_param
in conjunction with call_user_func_array
. Note that mysqli_stmt_bind_param
requires parameters to be passed by reference, whereas call_user_func_array
can accept as a parameter a list of variables that can represent references or values.
Parameters
stmt
-
Procedural style only: A statement identifier returned by
mysqli_stmt_init
. types
-
A string that contains one or more characters which specify the types for the corresponding bind variables:
Table 20.18. Type specification chars
Character Description i corresponding variable has type integer d corresponding variable has type double s corresponding variable has type string b corresponding variable is a blob and will be sent in packets var1
-
The number of variables and length of string
types
must match the parameters in the statement.
Return Values
Returns TRUE
on success or FALSE
on failure.
Examples
Example 20.144. Object oriented style
<?php $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world'); /* check connection */ if (mysqli_connect_errno()) { printf('Connect failed: %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; /* execute prepared statement */ $stmt->execute(); printf('%d Row inserted.\n', $stmt->affected_rows); /* close statement and connection */ $stmt->close(); /* Clean up table CountryLanguage */ $mysqli->query('DELETE FROM CountryLanguage WHERE Language='Bavarian''); printf('%d Row deleted.\n', $mysqli->affected_rows); /* close connection */ $mysqli->close(); ?>
Example 20.145. Procedural style
<?php $link = mysqli_connect('localhost', 'my_user', 'my_password', 'world'); /* check connection */ if (!$link) { printf('Connect failed: %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; /* execute prepared statement */ mysqli_stmt_execute($stmt); printf('%d Row inserted.\n', mysqli_stmt_affected_rows($stmt)); /* close statement and connection */ mysqli_stmt_close($stmt); /* Clean up table CountryLanguage */ mysqli_query($link, 'DELETE FROM CountryLanguage WHERE Language='Bavarian''); printf('%d Row deleted.\n', mysqli_affected_rows($link)); /* close connection */ mysqli_close($link); ?>
The above examples will output:
1 Row inserted. 1 Row deleted.
See Also
mysqli_stmt_bind_result
|
mysqli_stmt_execute
|
mysqli_stmt_fetch
|
mysqli_prepare
|
mysqli_stmt_send_long_data
|
mysqli_stmt_errno
|
mysqli_stmt_error |