|
 |
mysqli_stmt_execute (PHP 5) mysqli_stmt_execute (no version information, might be only in CVS) stmt->execute -- Executes a prepared Query DescriptionProcedural style: bool mysqli_stmt_execute ( mysqli_stmt stmt ) Object oriented style (method): class mysqli_stmt { bool execute ( void ) }
The mysqli_stmt_execute() function executes a query that has been previously
prepared using the mysqli_prepare() function represented by the
stmt object. When executed any parameter markers which exist will
automatically be replaced with the appropiate data.
If the statement is UPDATE, DELETE, or INSERT, the total number of affected rows can be
determined by using the mysqli_stmt_affected_rows() function. Likewise,
if the query yields a result set the mysqli_stmt_fetch() function is used.
Замечание:
When using mysqli_stmt_execute(), the mysqli_stmt_fetch()
function must be used to fetch the data prior to performing any additional queries.
Возвращаемые значения
Возвращает TRUE в случае успешного завершения или FALSE в случае возникновения ошибки.
ПримерыПример 1. Object oriented style
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$mysqli->query("CREATE TABLE myCity LIKE City");
$query = "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)";
$stmt = $mysqli->prepare($query);
$stmt->bind_param("sss", $val1, $val2, $val3);
$val1 = 'Stuttgart';
$val2 = 'DEU';
$val3 = 'Baden-Wuerttemberg';
$stmt->execute();
$val1 = 'Bordeaux';
$val2 = 'FRA';
$val3 = 'Aquitaine';
$stmt->execute();
$stmt->close();
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($result = $mysqli->query($query)) {
while ($row = $result->fetch_row()) {
printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
}
$result->close();
}
$mysqli->query("DROP TABLE myCity");
$mysqli->close();
?>
|
|
Пример 2. Procedural style
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
mysqli_query($link, "CREATE TABLE myCity LIKE City");
$query = "INSERT INTO myCity (Name, CountryCode, District) VALUES (?,?,?)";
$stmt = mysqli_prepare($link, $query);
mysqli_stmt_bind_param($stmt, "sss", $val1, $val2, $val3);
$val1 = 'Stuttgart';
$val2 = 'DEU';
$val3 = 'Baden-Wuerttemberg';
mysqli_stmt_execute($stmt);
$val1 = 'Bordeaux';
$val2 = 'FRA';
$val3 = 'Aquitaine';
mysqli_stmt_execute($stmt);
mysqli_stmt_close($stmt);
$query = "SELECT Name, CountryCode, District FROM myCity";
if ($result = mysqli_query($link, $query)) {
while ($row = mysqli_fetch_row($result)) {
printf("%s (%s,%s)\n", $row[0], $row[1], $row[2]);
}
mysqli_free_result($result);
}
mysqli_query($link, "DROP TABLE myCity");
mysqli_close($link);
?>
|
|
Результат выполнения данного примера: Stuttgart (DEU,Baden-Wuerttemberg)
Bordeaux (FRA,Aquitaine) |
mysqli_stmt_execute
andrey at php dot net
07-Oct-2005 05:34
If you select LOBs use the following order of execution or you risk mysqli allocating more memory that actually used
1)prepare()
2)execute()
3)store_result()
4)bind_result()
If you skip 3) or exchange 3) and 4) then mysqli will allocate memory for the maximal length of the column which is 255 for tinyblob, 64k for blob(still ok), 16MByte for MEDIUMBLOB - quite a lot and 4G for LONGBLOB (good if you have so much memory). Queries which use this order a bit slower when there is a LOB but this is the price of not having memory exhaustion in seconds.
| |