Spec-Zone .ru
спецификации, руководства, описания, API

22.9.3.10. mysqli_stmt class (mysqli_stmt)

Copyright 1997-2012 PHP Documentation Group.

Представляет готовый оператор.

 mysqli_stmt {
mysqli_stmtProperties int mysqli_stmt->affected_rows ;
int mysqli_stmt->errno ;
array mysqli_stmt->error_list ;
string mysqli_stmt->error ;
int mysqli_stmt->field_count ;
int mysqli_stmt->insert_id ;
int mysqli_stmt->num_rows ;
int mysqli_stmt->param_count ;
string mysqli_stmt->sqlstate ;
Methods int mysqli_stmt::attr_get(int attr);
bool mysqli_stmt::attr_set(int attr,
int mode);

bool mysqli_stmt::bind_param(string types,
mixed var1,
mixed ...);

bool mysqli_stmt::bind_result(mixed var1,
mixed ...);

bool mysqli_stmt::close();
void mysqli_stmt::data_seek(int offset);
bool mysqli_stmt::execute();
bool mysqli_stmt::fetch();
void mysqli_stmt::free_result();
mysqli_result mysqli_stmt::get_result();
object mysqli_stmt::get_warnings(mysqli_stmt stmt);
mixed mysqli_stmt::prepare(string query);
bool mysqli_stmt::reset();
mysqli_result mysqli_stmt::result_metadata();
bool mysqli_stmt::send_long_data(int param_nr,
string data);

bool mysqli_stmt::store_result();
}

22.9.3.10.1. mysqli_stmt::$affected_rows,mysqli_stmt_affected_rows

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$affected_rows

    mysqli_stmt_affected_rows

    Возвращает общее количество строк, измененных, удаленных, или вставленный последним выполняемым оператором

Описание

Объектно-ориентированный стиль

int mysqli_stmt->affected_rows ;

Процедурный стиль

int mysqli_stmt_affected_rows(mysqli_stmt stmt);

Возвращает число строк, на которые влияют INSERT, UPDATE, или DELETE запрос.

Эта функция только работает с запросами, которые обновляют таблицу. Чтобы получить число строк от Запроса Select, использовать mysqli_stmt_num_rows вместо этого.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Целое число, больше чем нуль, указывает на число строк, на которые влияют или полученный. Нуль указывает, что никакие записи где обновлено для ОБНОВЛЕНИЯ/ОПЕРАТОРА УДАЛЕНИЯ, никакие строки, соответствующие, ГДЕ пункт в запросе или что никакой запрос еще не был выполнен.-1 указывает, что запрос возвратил ошибку. НУЛЬ указывает, что несостоятельный довод был предоставлен функции.

Отметить

Если число строк, на которые влияют, будет больше чем максимальное международное значение PHP, то число строк, на которые влияют, будет возвращено как строковое значение.

Примеры

Пример 22.149. Объектно-ориентированный стиль

<?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();}/* create temp table */$mysqli->query("CREATE TEMPORARY TABLE myCountry LIKE Country");$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";/* prepare statement */if ($stmt = $mysqli->prepare($query)) {    /* Bind variable for placeholder */    $code = 'A%';    $stmt->bind_param("s", $code);    /* execute statement */    $stmt->execute();    printf("rows inserted: %d\n", $stmt->affected_rows);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.150. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}/* create temp table */mysqli_query($link, "CREATE TEMPORARY TABLE myCountry LIKE Country");$query = "INSERT INTO myCountry SELECT * FROM Country WHERE Code LIKE ?";/* prepare statement */if ($stmt = mysqli_prepare($link, $query)) {    /* Bind variable for placeholder */    $code = 'A%';    mysqli_stmt_bind_param($stmt, "s", $code);    /* execute statement */    mysqli_stmt_execute($stmt);    printf("rows inserted: %d\n", mysqli_stmt_affected_rows($stmt));    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

rows inserted: 17

См. Также

mysqli_stmt_num_rows
mysqli_prepare

22.9.3.10.2. mysqli_stmt::attr_get,mysqli_stmt_attr_get

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::attr_get

    mysqli_stmt_attr_get

    Используемый, чтобы получить текущую стоимость атрибута оператора

Описание

Объектно-ориентированный стиль

int mysqli_stmt::attr_get(int attr);

Процедурный стиль

int mysqli_stmt_attr_get(mysqli_stmt stmt,
int attr);

Получает текущую стоимость атрибута оператора.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

attr

Атрибут, который Вы хотите получить.

Возвращаемые значения

Возвраты FALSE если атрибут не находится, иначе возвращает значение атрибута.

22.9.3.10.3. mysqli_stmt::attr_set,mysqli_stmt_attr_set

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::attr_set

    mysqli_stmt_attr_set

    Используемый, чтобы изменить поведение готового оператора

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::attr_set(int attr,
int mode);

Процедурный стиль

bool mysqli_stmt_attr_set(mysqli_stmt stmt,
int attr,
int mode);

Используемый, чтобы изменить поведение готового оператора. Эта функция может быть вызвана многократно, чтобы установить несколько атрибутов.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

attr

Атрибут, который Вы хотите установить. У этого может быть одно из следующих значений:

Таблица 22.52. Значения атрибута

Символ Описание
MYSQLI_STMT_ATTR_UPDATE_MAX_LENGTH Если установлено в 1, причины mysqli_stmt_store_result обновить метаданные MYSQL_FIELD->max_length значение.
MYSQLI_STMT_ATTR_CURSOR_TYPE Тип курсора, чтобы открыться для оператора, когда mysqli_stmt_execute вызывается. mode может быть MYSQLI_CURSOR_TYPE_NO_CURSOR (значение по умолчанию) или MYSQLI_CURSOR_TYPE_READ_ONLY.
MYSQLI_STMT_ATTR_PREFETCH_ROWS Число строк, чтобы выбрать от сервера в то время, когда использование курсора. mode может быть в диапазоне от 1 до максимального значения unsignedlong. Значение по умолчанию 1.

Если Вы используете MYSQLI_STMT_ATTR_CURSOR_TYPE опция с MYSQLI_CURSOR_TYPE_READ_ONLY, курсор открывается для оператора, когда Вы вызываете mysqli_stmt_execute. Если уже есть открытый курсор от предыдущего mysqli_stmt_execute вызовите, это закрывает курсор прежде, чем открыть новый. mysqli_stmt_reset также завершения любой открытый курсор прежде, чем подготовить оператор к повторному выполнению. mysqli_stmt_free_result завершения любой открытый курсор.

Если Вы открываете курсор для готового оператора, mysqli_stmt_store_result является ненужным.

mode

Значение, чтобы присвоиться к атрибуту.

22.9.3.10.4. mysqli_stmt::bind_param,mysqli_stmt_bind_param

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::bind_param

    mysqli_stmt_bind_param

    Связывает переменные с готовым оператором как параметры

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::bind_param(string types,
mixed var1,
mixed ...);

Процедурный стиль

bool mysqli_stmt_bind_param(mysqli_stmt stmt,
string types,
mixed var1,
mixed ...);

Свяжите переменные для маркеров параметра в SQL-операторе, к которому передали mysqli_prepare.

Отметить

Если размер данных переменной превышает максимальный позволенный пакетный размер (max_allowed_packet), необходимо определить b в types и используйте mysqli_stmt_send_long_data отправить данные в пакетах.

Отметить

Забота должна быть проявлена при использовании mysqli_stmt_bind_param в соединении с call_user_func_array. Отметьте это mysqli_stmt_bind_param требует, чтобы параметры были переданы ссылкой, тогда как call_user_func_array может принять в качестве параметра список переменных, которые могут представить ссылки или значения.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

types

Строка, которая содержит один или более символов, которые определяют типы для соответствия, связывает переменные:

Таблица 22.53. Введите случайные работы спецификации

Символ Описание
я у соответствующей переменной есть целое число типа
d у соответствующей переменной есть двойной тип
s у соответствующей переменной есть строка типа
b соответствующая переменная является блобом и будет отправлена в пакетах
var1

Число переменных и длина строки types должен соответствовать параметры в операторе.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Примеры

Пример 22.151. Объектно-ориентированный стиль

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

Пример 22.152. Процедурный стиль

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

Вышеупомянутые примеры выведут:

1 Row inserted.1 Row deleted.

См. Также

mysqli_stmt_bind_result
mysqli_stmt_execute
mysqli_stmt_fetch
mysqli_prepare
mysqli_stmt_send_long_data
mysqli_stmt_errno
mysqli_stmt_error

22.9.3.10.5. mysqli_stmt::bind_result,mysqli_stmt_bind_result

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::bind_result

    mysqli_stmt_bind_result

    Связывает переменные с готовым оператором для хранения результата

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::bind_result(mixed var1,
mixed ...);

Процедурный стиль

bool mysqli_stmt_bind_result(mysqli_stmt stmt,
mixed var1,
mixed ...);

Связывает столбцы в наборе результатов к переменным.

Когда mysqli_stmt_fetch вызывается, чтобы выбрать данные, протокол клиента/сервера MySQL помещает данные для связанных столбцов в указанные переменные var1, ....

Отметить

Отметьте, что все столбцы должны быть связаны после mysqli_stmt_execute и до вызова mysqli_stmt_fetch. В зависимости от типов столбца связанные переменные могут тихо измениться на соответствующий тип PHP.

Столбец может быть связан или восстановление в любое время, даже после того, как набор результатов был частично получен. Новая привязка вступает в силу в следующий раз mysqli_stmt_fetch вызывается.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

var1

Переменная, которая будет связана.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Примеры

Пример 22.153. Объектно-ориентированный стиль

<?php$mysqli = new mysqli("localhost", "my_user", "my_password", "world");if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}/* prepare statement */if ($stmt = $mysqli->prepare("SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {    $stmt->execute();    /* bind variables to prepared statement */    $stmt->bind_result($col1, $col2);    /* fetch values */    while ($stmt->fetch()) {        printf("%s %s\n", $col1, $col2);    }    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.154. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (!$link) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}/* prepare statement */if ($stmt = mysqli_prepare($link, "SELECT Code, Name FROM Country ORDER BY Name LIMIT 5")) {    mysqli_stmt_execute($stmt);    /* bind variables to prepared statement */    mysqli_stmt_bind_result($stmt, $col1, $col2);    /* fetch values */    while (mysqli_stmt_fetch($stmt)) {        printf("%s %s\n", $col1, $col2);    }    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

AFG AfghanistanALB AlbaniaDZA AlgeriaASM American SamoaAND Andorra

См. Также

mysqli_stmt_bind_param
mysqli_stmt_execute
mysqli_stmt_fetch
mysqli_prepare
mysqli_stmt_prepare
mysqli_stmt_init
mysqli_stmt_errno
mysqli_stmt_error

22.9.3.10.6. mysqli_stmt::close,mysqli_stmt_close

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::close

    mysqli_stmt_close

    Закрывает готовый оператор

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::close();

Процедурный стиль

bool mysqli_stmt_close(mysqli_stmt stmt);

Закрывает готовый оператор. mysqli_stmt_close также освобождает дескриптор оператора. Если у текущего оператора есть ожидание или непрочитанные результаты, эта функция отменяет их так, чтобы следующий запрос мог быть выполнен.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

См. Также

mysqli_prepare

22.9.3.10.7. mysqli_stmt::data_seek,mysqli_stmt_data_seek

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::data_seek

    mysqli_stmt_data_seek

    Ищет на произвольную строку в наборе результатов оператора

Описание

Объектно-ориентированный стиль

void mysqli_stmt::data_seek(int offset);

Процедурный стиль

void mysqli_stmt_data_seek(mysqli_stmt stmt,
int offset);

Ищет на произвольный указатель результата в наборе результатов оператора.

mysqli_stmt_store_result до нужно вызвать mysqli_stmt_data_seek.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

offset

Должен быть между нулем и общим количеством строк минус один (0.. mysqli_stmt_num_rows - 1).

Возвращаемые значения

Никакое значение не возвращается.

Примеры

Пример 22.155. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name";if ($stmt = $mysqli->prepare($query)) {    /* execute query */    $stmt->execute();    /* bind result variables */    $stmt->bind_result($name, $code);    /* store result */    $stmt->store_result();    /* seek to row no. 400 */    $stmt->data_seek(399);    /* fetch values */    $stmt->fetch();    printf ("City: %s  Countrycode: %s\n", $name, $code);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.156. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name";if ($stmt = mysqli_prepare($link, $query)) {    /* execute query */    mysqli_stmt_execute($stmt);    /* bind result variables */    mysqli_stmt_bind_result($stmt, $name, $code);    /* store result */    mysqli_stmt_store_result($stmt);    /* seek to row no. 400 */    mysqli_stmt_data_seek($stmt, 399);    /* fetch values */    mysqli_stmt_fetch($stmt);    printf ("City: %s  Countrycode: %s\n", $name, $code);    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

City: Benin City  Countrycode: NGA

См. Также

mysqli_prepare

22.9.3.10.8. mysqli_stmt::$errno,mysqli_stmt_errno

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$errno

    mysqli_stmt_errno

    Возвращает код ошибки для нового вызова оператора

Описание

Объектно-ориентированный стиль

int mysqli_stmt->errno ;

Процедурный стиль

int mysqli_stmt_errno(mysqli_stmt stmt);

Возвращает код ошибки для последний раз вызванной функции оператора, которая может успешно выполниться или перестать работать.

Клиентские числа сообщения об ошибке перечисляются в MySQL errmsg.h заголовочный файл, числа сообщения об ошибке сервера перечисляются в mysqld_error.h. В исходном распределении MySQL можно найти полный список сообщений об ошибках и кодов ошибки в файле Docs/mysqld_error.txt.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Значение кода ошибки. Нуль означает, что никакая ошибка не произошла.

Примеры

Пример 22.157. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$mysqli->query("CREATE TABLE myCountry LIKE Country");$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = $mysqli->prepare($query)) {    /* drop table */    $mysqli->query("DROP TABLE myCountry");    /* execute query */    $stmt->execute();    printf("Error: %d.\n", $stmt->errno);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.158. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}mysqli_query($link, "CREATE TABLE myCountry LIKE Country");mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = mysqli_prepare($link, $query)) {    /* drop table */    mysqli_query($link, "DROP TABLE myCountry");    /* execute query */    mysqli_stmt_execute($stmt);    printf("Error: %d.\n", mysqli_stmt_errno($stmt));    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Error: 1146.

См. Также

mysqli_stmt_error
mysqli_stmt_sqlstate

22.9.3.10.9. mysqli_stmt::$error_list,mysqli_stmt_error_list

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$error_list

    mysqli_stmt_error_list

    Возвращает список ошибок от последнего выполняемого оператора

Описание

Объектно-ориентированный стиль

array mysqli_stmt->error_list ;

Процедурный стиль

array mysqli_stmt_error_list(mysqli_stmt stmt);

Возвращает массив ошибок для последний раз вызванной функции оператора, которая может успешно выполниться или перестать работать.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Список ошибок, каждый как ассоциативный массив, содержащий errno, ошибку, и sqlstate.

Примеры

Пример 22.159. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$mysqli->query("CREATE TABLE myCountry LIKE Country");$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = $mysqli->prepare($query)) {    /* drop table */    $mysqli->query("DROP TABLE myCountry");    /* execute query */    $stmt->execute();        echo "Error:\n";    print_r($stmt->error_list);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.160. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}mysqli_query($link, "CREATE TABLE myCountry LIKE Country");mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = mysqli_prepare($link, $query)) {    /* drop table */    mysqli_query($link, "DROP TABLE myCountry");    /* execute query */    mysqli_stmt_execute($stmt);        echo "Error:\n";    print_r(mysql_stmt_error_list($stmt));    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Array(    [0] => Array        (            [errno] => 1146            [sqlstate] => 42S02            [error] => Table 'world.myCountry' doesn't exist        ))

См. Также

mysqli_stmt_error
mysqli_stmt_errno
mysqli_stmt_sqlstate

22.9.3.10.10. mysqli_stmt::$error,mysqli_stmt_error

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$error

    mysqli_stmt_error

    Возвращает строковое описание для последней ошибки оператора

Описание

Объектно-ориентированный стиль

string mysqli_stmt->error ;

Процедурный стиль

string mysqli_stmt_error(mysqli_stmt stmt);

Возвраты содержание сообщения об ошибке для последний раз вызванной функции оператора, которая может успешно выполниться или перестать работать.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Строка, которая описывает ошибку. Пустая строка, если никакая ошибка не произошла.

Примеры

Пример 22.161. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$mysqli->query("CREATE TABLE myCountry LIKE Country");$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = $mysqli->prepare($query)) {    /* drop table */    $mysqli->query("DROP TABLE myCountry");    /* execute query */    $stmt->execute();    printf("Error: %s.\n", $stmt->error);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.162. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}mysqli_query($link, "CREATE TABLE myCountry LIKE Country");mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = mysqli_prepare($link, $query)) {    /* drop table */    mysqli_query($link, "DROP TABLE myCountry");    /* execute query */    mysqli_stmt_execute($stmt);    printf("Error: %s.\n", mysqli_stmt_error($stmt));    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Error: Table 'world.myCountry' doesn't exist.

См. Также

mysqli_stmt_errno
mysqli_stmt_sqlstate

22.9.3.10.11. mysqli_stmt::execute,mysqli_stmt_execute

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::execute

    mysqli_stmt_execute

    Выполняет готовый Запрос

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::execute();

Процедурный стиль

bool mysqli_stmt_execute(mysqli_stmt stmt);

Выполняет запрос, который был ранее подготовлен, используя mysqli_prepare функция. Когда выполняющийся любые маркеры параметра, которые существуют, будут автоматически заменены соответствующими данными.

Если оператор UPDATE, DELETE, или INSERT, общее количество строк, на которые влияют, может быть определено при использовании mysqli_stmt_affected_rows функция. Аналогично, если запрос приводит к набору результатов mysqli_stmt_fetch функция используется.

Отметить

При использовании mysqli_stmt_execute, mysqli_stmt_fetch функция должна использоваться, чтобы выбрать данные до выполнения любых дополнительных запросов.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Примеры

Пример 22.163. Объектно-ориентированный стиль

<?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();}$mysqli->query("CREATE TABLE myCity LIKE City");/* Prepare an insert statement */$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';/* Execute the statement */$stmt->execute();$val1 = 'Bordeaux';$val2 = 'FRA';$val3 = 'Aquitaine';/* Execute the statement */$stmt->execute();/* close statement */$stmt->close();/* retrieve all rows from myCity */$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]);    }    /* free result set */    $result->close();}/* remove table */$mysqli->query("DROP TABLE myCity");/* close connection */$mysqli->close();?>

Пример 22.164. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}mysqli_query($link, "CREATE TABLE myCity LIKE City");/* Prepare an insert statement */$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';/* Execute the statement */mysqli_stmt_execute($stmt);$val1 = 'Bordeaux';$val2 = 'FRA';$val3 = 'Aquitaine';/* Execute the statement */mysqli_stmt_execute($stmt);/* close statement */mysqli_stmt_close($stmt);/* retrieve all rows from myCity */$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]);    }    /* free result set */    mysqli_free_result($result);}/* remove table */mysqli_query($link, "DROP TABLE myCity");/* close connection */mysqli_close($link);?>     

Вышеупомянутые примеры выведут:

Stuttgart (DEU,Baden-Wuerttemberg)Bordeaux (FRA,Aquitaine)

См. Также

mysqli_prepare
mysqli_stmt_bind_param

22.9.3.10.12. mysqli_stmt::fetch,mysqli_stmt_fetch

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::fetch

    mysqli_stmt_fetch

    Выборка следует из готового оператора в связанные переменные

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::fetch();

Процедурный стиль

bool mysqli_stmt_fetch(mysqli_stmt stmt);

Выберите следствие готового оператора в переменные, связанные mysqli_stmt_bind_result.

Отметить

Отметьте, что все столбцы должны быть связаны приложением перед вызовом mysqli_stmt_fetch.

Отметить

Данные передаются небуферизованные без вызова mysqli_stmt_store_result который может уменьшить производительность (но уменьшает стоимость памяти).

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Таблица 22.54. Возвращаемые значения

Значение Описание
TRUE Успех. Данные были выбраны
FALSE Ошибка произошла
NULL Больше строк/данных не существует, или усечение данных произошло

Примеры

Пример 22.165. Объектно-ориентированный стиль

<?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();}$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";if ($stmt = $mysqli->prepare($query)) {    /* execute statement */    $stmt->execute();    /* bind result variables */    $stmt->bind_result($name, $code);    /* fetch values */    while ($stmt->fetch()) {        printf ("%s (%s)\n", $name, $code);    }    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.166. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 150,5";if ($stmt = mysqli_prepare($link, $query)) {    /* execute statement */    mysqli_stmt_execute($stmt);    /* bind result variables */    mysqli_stmt_bind_result($stmt, $name, $code);    /* fetch values */    while (mysqli_stmt_fetch($stmt)) {        printf ("%s (%s)\n", $name, $code);    }    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Rockford (USA)Tallahassee (USA)Salinas (USA)Santa Clarita (USA)Springfield (USA)

См. Также

mysqli_prepare
mysqli_stmt_errno
mysqli_stmt_error
mysqli_stmt_bind_result

22.9.3.10.13. mysqli_stmt::$field_count,mysqli_stmt_field_count

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$field_count

    mysqli_stmt_field_count

    Возвращает число поля в данном операторе

Описание

Объектно-ориентированный стиль

int mysqli_stmt->field_count ;

Процедурный стиль

int mysqli_stmt_field_count(mysqli_stmt stmt);
Предупреждение

Эта функция iscurrently не задокументированный; только его список параметров доступен.

22.9.3.10.14. mysqli_stmt::free_result,mysqli_stmt_free_result

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::free_result

    mysqli_stmt_free_result

    Освобождает сохраненную память результата для данного дескриптора оператора

Описание

Объектно-ориентированный стиль

void mysqli_stmt::free_result();

Процедурный стиль

void mysqli_stmt_free_result(mysqli_stmt stmt);

Освобождает память результата, связанную с оператором, который был выделен mysqli_stmt_store_result.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Никакое значение не возвращается.

См. Также

mysqli_stmt_store_result

22.9.3.10.15. mysqli_stmt::get_result,mysqli_stmt_get_result

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::get_result

    mysqli_stmt_get_result

    Получает набор результатов от готового оператора

Описание

Объектно-ориентированный стиль

mysqli_result mysqli_stmt::get_result();

Процедурный стиль

mysqli_result mysqli_stmt_get_result(mysqli_stmt stmt);

Вызовите, чтобы возвратить набор результатов из готового запроса оператора.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвращает набор результатов или FALSE при отказе.

MySQL Native Driver Only

Доступный только с mysqlnd.

Примеры

Пример 22.167. Объектно-ориентированный стиль

<?php $mysqli = new mysqli("127.0.0.1", "user", "password", "world"); if($mysqli->connect_error){    die("$mysqli->connect_errno: $mysqli->connect_error");}$query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";$stmt = $mysqli->stmt_init();if(!$stmt->prepare($query)){    print "Failed to prepare statement\n";}else{    $stmt->bind_param("s", $continent);    $continent_array = array('Europe','Africa','Asia','North America');    foreach($continent_array as $continent)    {        $stmt->execute();        $result = $stmt->get_result();        while ($row = $result->fetch_array(MYSQLI_NUM))        {            foreach ($row as $r)            {                print "$r ";            }            print "\n";        }    }}$stmt->close();$mysqli->close();?>

Пример 22.168. Процедурный стиль

<?php $link = mysqli_connect("127.0.0.1", "user", "password", "world"); if (!$link){    $error = mysqli_connect_error();    $errno = mysqli_connect_errno();    print "$errno: $error\n";    exit();}$query = "SELECT Name, Population, Continent FROM Country WHERE Continent=? ORDER BY Name LIMIT 1";$stmt = mysqli_stmt_init($link);if(!mysqli_stmt_prepare($stmt, $query)){    print "Failed to prepare statement\n";}else{    mysqli_stmt_bind_param($stmt, "s", $continent);    $continent_array = array('Europe','Africa','Asia','North America');    foreach($continent_array as $continent)    {        mysqli_stmt_execute($stmt);        $result = mysqli_stmt_get_result($stmt);        while ($row = mysqli_fetch_array($result, MYSQLI_NUM))        {            foreach ($row as $r)            {                print "$r ";            }            print "\n";        }    }}mysqli_stmt_close($stmt);mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Albania 3401200 Europe Algeria 31471000 Africa Afghanistan 22720000 Asia Anguilla 8000 North America 

См. Также

mysqli_prepare
mysqli_stmt_result_metadata
mysqli_stmt_fetch
mysqli_fetch_array
mysqli_stmt_store_result

22.9.3.10.16. mysqli_stmt::get_warnings,mysqli_stmt_get_warnings

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::get_warnings

    mysqli_stmt_get_warnings

    Получите результат ВЫСТАВОЧНЫХ ПРЕДУПРЕЖДЕНИЙ

Описание

Объектно-ориентированный стиль

object mysqli_stmt::get_warnings(mysqli_stmt stmt);

Процедурный стиль

object mysqli_stmt_get_warnings(mysqli_stmt stmt);
Предупреждение

Эта функция iscurrently не задокументированный; только его список параметров доступен.

22.9.3.10.17. mysqli_stmt::$insert_id,mysqli_stmt_insert_id

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$insert_id

    mysqli_stmt_insert_id

    Генерируйте ID от предыдущей работы ВСТАВКИ

Описание

Объектно-ориентированный стиль

int mysqli_stmt->insert_id ;

Процедурный стиль

mixed mysqli_stmt_insert_id(mysqli_stmt stmt);
Предупреждение

Эта функция iscurrently не задокументированный; только его список параметров доступен.

22.9.3.10.18. mysqli_stmt::more_results,mysqli_stmt_more_results

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::more_results

    mysqli_stmt_more_results

    Проверьте, есть ли больше запроса, следует из многократного запроса

Описание

Объектно-ориентированный стиль (метод):

public bool mysqli_stmt::more_results();

Процедурный стиль:

bool mysqli_stmt_more_results(mysql_stmt stmt);

Проверки, если есть больше запроса, следуют из многократного запроса.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвраты TRUE если больше результатов существует, иначе FALSE .

См. Также

mysqli_stmt::next_result
mysqli::multi_query

22.9.3.10.19. mysqli_stmt::next_result,mysqli_stmt_next_result

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::next_result

    mysqli_stmt_next_result

    Читает следующее следствие многократного запроса

Описание

Объектно-ориентированный стиль (метод):

public bool mysqli_stmt::next_result();

Процедурный стиль:

bool mysqli_stmt_next_result(mysql_stmt stmt);

Читает следующее следствие многократного запроса.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Ошибки/Исключения

Испускает E_STRICT ошибка уровня, если набор результатов не существует, и предлагает использовать mysqli_stmt::more_results в этих случаях, перед вызовом mysqli_stmt::next_result.

См. Также

mysqli_stmt::more_results
mysqli::multi_query

22.9.3.10.20. mysqli_stmt::$num_rows,mysqli_stmt_num_rows

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$num_rows

    mysqli_stmt_num_rows

    Возвратите число строк в наборе результатов операторов

Описание

Объектно-ориентированный стиль

int mysqli_stmt->num_rows ;

Процедурный стиль

int mysqli_stmt_num_rows(mysqli_stmt stmt);

Возвращает число строк в наборе результатов. Использование mysqli_stmt_num_rows зависит от того, использовали ли Вы mysqli_stmt_store_result буферизовать весь набор результатов в дескрипторе оператора.

Если Вы используете mysqli_stmt_store_result, mysqli_stmt_num_rows может быть сразу вызван.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Целое число, представляющее число строк в наборе результатов.

Примеры

Пример 22.169. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";if ($stmt = $mysqli->prepare($query)) {    /* execute query */    $stmt->execute();    /* store result */    $stmt->store_result();    printf("Number of rows: %d.\n", $stmt->num_rows);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.170. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";if ($stmt = mysqli_prepare($link, $query)) {    /* execute query */    mysqli_stmt_execute($stmt);    /* store result */    mysqli_stmt_store_result($stmt);    printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Number of rows: 20.

См. Также

mysqli_stmt_affected_rows
mysqli_prepare
mysqli_stmt_store_result

22.9.3.10.21. mysqli_stmt::$param_count,mysqli_stmt_param_count

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$param_count

    mysqli_stmt_param_count

    Возвращает число параметра для данного оператора

Описание

Объектно-ориентированный стиль

int mysqli_stmt->param_count ;

Процедурный стиль

int mysqli_stmt_param_count(mysqli_stmt stmt);

Возвращает число маркеров параметра, существующих в готовом операторе.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвращает целое число, представляющее число параметров.

Примеры

Пример 22.171. Объектно-ориентированный стиль

<?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();}if ($stmt = $mysqli->prepare("SELECT Name FROM Country WHERE Name=? OR Code=?")) {    $marker = $stmt->param_count;    printf("Statement has %d markers.\n", $marker);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.172. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}if ($stmt = mysqli_prepare($link, "SELECT Name FROM Country WHERE Name=? OR Code=?")) {    $marker = mysqli_stmt_param_count($stmt);    printf("Statement has %d markers.\n", $marker);    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Statement has 2 markers.

См. Также

mysqli_prepare

22.9.3.10.22. mysqli_stmt::prepare,mysqli_stmt_prepare

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::prepare

    mysqli_stmt_prepare

    Подготовьте SQL-оператор к выполнению

Описание

Объектно-ориентированный стиль

mixed mysqli_stmt::prepare(string query);

Процедурный стиль

bool mysqli_stmt_prepare(mysqli_stmt stmt,
string query);

Готовит SQL-запрос, на который указывает завершенный нулем строковый запрос.

Маркеры параметра должны быть связаны с использованием переменных приложения mysqli_stmt_bind_param и/или mysqli_stmt_bind_result прежде, чем выполнить оператор или выбрать строки.

Отметить

В случае, где Вы передаете оператор к mysqli_stmt_prepare это более длинно чем max_allowed_packet из сервера возвращенные коды ошибки отличаются в зависимости от того, используете ли Вы MySQL Native Driver (mysqlnd) или MySQL Client Library (libmysqlclient). Поведение следующие:

  • mysqlnd на Linux возвращает код ошибки 1153. Средства сообщения об ошибке "получили пакет, больше чем max_allowed_packet байты".

  • mysqlnd на Windows возвращает код ошибки 2006. Этот сервер "средств сообщения об ошибке ушел".

  • libmysqlclient на всех платформах возвращает код ошибки 2006. Этот сервер "средств сообщения об ошибке ушел".

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

query

Запрос, как строка. Это должно состоять из единственного SQL-оператора.

Можно включать один или более маркеров параметра в SQL-оператор, встраивая вопросительный знак (?) символы в соответствующих позициях.

Отметить

Недопустимо добавить завершающуюся точку с запятой или \g к оператору.

Отметить

Маркеры являются законными только в определенных местах в SQL-операторах. Например, им позволяют в ЗНАЧЕНИЯХ () список оператора INSERT (чтобы определить значения столбцов для строки), или в сравнении со столбцом в ГДЕ пункт, чтобы определить сравнительное значение.

Однако, им не позволяют для идентификаторов (таких как имена таблиц или имена столбцов) в списке выборки, который называет столбцы, которые будут возвращены оператором SELECT), или определить оба операнда бинарного оператора такой как = знак "равно". Последнее ограничение необходимо, потому что было бы невозможно определить тип параметра. Вообще, параметры являются законными только в Языке манипулирования данными (DML) операторы, а не в Языке определения данных (DDL) операторы.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Примеры

Пример 22.173. Объектно-ориентированный стиль

<?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();}$city = "Amersfoort";/* create a prepared statement */$stmt =  $mysqli->stmt_init();if ($stmt->prepare("SELECT District FROM City WHERE Name=?")) {    /* bind parameters for markers */    $stmt->bind_param("s", $city);    /* execute query */    $stmt->execute();    /* bind result variables */    $stmt->bind_result($district);    /* fetch value */    $stmt->fetch();    printf("%s is in district %s\n", $city, $district);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.174. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$city = "Amersfoort";/* create a prepared statement */$stmt = mysqli_stmt_init($link);if (mysqli_stmt_prepare($stmt, 'SELECT District FROM City WHERE Name=?')) {    /* bind parameters for markers */    mysqli_stmt_bind_param($stmt, "s", $city);    /* execute query */    mysqli_stmt_execute($stmt);    /* bind result variables */    mysqli_stmt_bind_result($stmt, $district);    /* fetch value */    mysqli_stmt_fetch($stmt);    printf("%s is in district %s\n", $city, $district);    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Amersfoort is in district Utrecht

См. Также

mysqli_stmt_init
mysqli_stmt_execute
mysqli_stmt_fetch
mysqli_stmt_bind_param
mysqli_stmt_bind_result
mysqli_stmt_close

22.9.3.10.23. mysqli_stmt::reset,mysqli_stmt_reset

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::reset

    mysqli_stmt_reset

    Сбрасывает готовый оператор

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::reset();

Процедурный стиль

bool mysqli_stmt_reset(mysqli_stmt stmt);

Сбрасывает готовый оператор на клиенте и сервере, чтобы утвердить после того, как готовятся.

Это сбрасывает оператор на сервере, данные отправили использование mysqli_stmt_send_long_data, небуферизованные наборы результатов и текущие ошибки. Это не очищает привязку или сохраненные наборы результатов. Сохраненные наборы результатов будут очищены, выполняя готовый оператор (или закрывая его).

Чтобы подготовить оператор с другим запросом используют функцию mysqli_stmt_prepare.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

См. Также

mysqli_prepare

22.9.3.10.24. mysqli_stmt::result_metadata,mysqli_stmt_result_metadata

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::result_metadata

    mysqli_stmt_result_metadata

    Метаданные набора результатов возвратов от готового оператора

Описание

Объектно-ориентированный стиль

mysqli_result mysqli_stmt::result_metadata();

Процедурный стиль

mysqli_result mysqli_stmt_result_metadata(mysqli_stmt stmt);

Если оператор, к которому передают mysqli_prepare тот, который производит набор результатов, mysqli_stmt_result_metadata возвращает объект результата, который может использоваться, чтобы обработать метаинформацию, такую как общее количество полей и отдельной информации о поле.

Отметить

Этот указатель набора результатов можно передать как параметр любой из основанных на поле функций, которые обрабатывают метаданные набора результатов, такие как:

Структура набора результатов должна быть освобождена, когда Вы делаетесь с нею, которую можно сделать, передавая ее к mysqli_free_result

Отметить

Набор результатов, возвращенный mysqli_stmt_result_metadata содержит только метаданные. Это не содержит результатов строки. Строки получаются при использовании дескриптора оператора с mysqli_stmt_fetch.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвращает объект результата или FALSE если ошибка произошла.

Примеры

Пример 22.175. Объектно-ориентированный стиль

<?php$mysqli = new mysqli("localhost", "my_user", "my_password", "test");$mysqli->query("DROP TABLE IF EXISTS friends");$mysqli->query("CREATE TABLE friends (id int, name varchar(20))");$mysqli->query("INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");$stmt = $mysqli->prepare("SELECT id, name FROM friends");$stmt->execute();/* get resultset for metadata */$result = $stmt->result_metadata();/* retrieve field information from metadata result set */$field = $result->fetch_field();printf("Fieldname: %s\n", $field->name);/* close resultset */$result->close();/* close connection */$mysqli->close();?>

Пример 22.176. Процедурный стиль

<?php$link = mysqli_connect("localhost", "my_user", "my_password", "test");mysqli_query($link, "DROP TABLE IF EXISTS friends");mysqli_query($link, "CREATE TABLE friends (id int, name varchar(20))");mysqli_query($link, "INSERT INTO friends VALUES (1,'Hartmut'), (2, 'Ulf')");$stmt = mysqli_prepare($link, "SELECT id, name FROM friends");mysqli_stmt_execute($stmt);/* get resultset for metadata */$result = mysqli_stmt_result_metadata($stmt);/* retrieve field information from metadata result set */$field = mysqli_fetch_field($result);printf("Fieldname: %s\n", $field->name);/* close resultset */mysqli_free_result($result);/* close connection */mysqli_close($link);?>

См. Также

mysqli_prepare
mysqli_free_result

22.9.3.10.25. mysqli_stmt::send_long_data,mysqli_stmt_send_long_data

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::send_long_data

    mysqli_stmt_send_long_data

    Отправьте данные в блоках

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::send_long_data(int param_nr,
string data);

Процедурный стиль

bool mysqli_stmt_send_long_data(mysqli_stmt stmt,
int param_nr,
string data);

Позволяет отправлять данные параметра серверу в частях (или блоки), например, если размер блоба превышает размер max_allowed_packet. Эта функция может быть вызвана многократно, чтобы отправить части символа или значения двоичных данных для столбца, который должен быть одним из типов данных BLOB или ТЕКСТА.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

param_nr

Указывает который параметр связать данные с. Параметры нумеруются, начинаясь 0.

data

Строка, содержащая данные, которые будут отправлены.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Примеры

Пример 22.177. Объектно-ориентированный стиль

<?php$stmt = $mysqli->prepare("INSERT INTO messages (message) VALUES (?)");$null = NULL;$stmt->bind_param("b", $null);$fp = fopen("messages.txt", "r");while (!feof($fp)) {    $stmt->send_long_data(0, fread($fp, 8192));}fclose($fp);$stmt->execute();?>

См. Также

mysqli_prepare
mysqli_stmt_bind_param

22.9.3.10.26. mysqli_stmt::$sqlstate,mysqli_stmt_sqlstate

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::$sqlstate

    mysqli_stmt_sqlstate

    Возвраты ошибка SQLSTATE от предыдущей работы оператора

Описание

Объектно-ориентированный стиль

string mysqli_stmt->sqlstate ;

Процедурный стиль

string mysqli_stmt_sqlstate(mysqli_stmt stmt);

Возвращает строку, содержащую код ошибки SQLSTATE для последний раз вызванной готовой функции оператора, которая может успешно выполниться или перестать работать. Код ошибки состоит из пяти символов. '00000' средства никакая ошибка. Значения определяются ANSI SQL и ODBC. Для списка возможных значений см. http://dev.mysql.com/doc/mysql/en/error-handling.html.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвращает строку, содержащую код ошибки SQLSTATE для последней ошибки. Код ошибки состоит из пяти символов. '00000' средства никакая ошибка.

Примечания

Отметить

Отметьте, что не все ошибки MySQL все же отображаются на SQLSTATE's. Значение HY000 (общая ошибка), используется для неотображенных ошибок.

Примеры

Пример 22.178. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$mysqli->query("CREATE TABLE myCountry LIKE Country");$mysqli->query("INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = $mysqli->prepare($query)) {    /* drop table */    $mysqli->query("DROP TABLE myCountry");    /* execute query */    $stmt->execute();    printf("Error: %s.\n", $stmt->sqlstate);    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.179. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}mysqli_query($link, "CREATE TABLE myCountry LIKE Country");mysqli_query($link, "INSERT INTO myCountry SELECT * FROM Country");$query = "SELECT Name, Code FROM myCountry ORDER BY Name";if ($stmt = mysqli_prepare($link, $query)) {    /* drop table */    mysqli_query($link, "DROP TABLE myCountry");    /* execute query */    mysqli_stmt_execute($stmt);    printf("Error: %s.\n", mysqli_stmt_sqlstate($stmt));    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Error: 42S02.

См. Также

mysqli_stmt_errno
mysqli_stmt_error

22.9.3.10.27. mysqli_stmt::store_result,mysqli_stmt_store_result

Copyright 1997-2012 PHP Documentation Group.

  • mysqli_stmt::store_result

    mysqli_stmt_store_result

    Передает набор результатов от готового оператора

Описание

Объектно-ориентированный стиль

bool mysqli_stmt::store_result();

Процедурный стиль

bool mysqli_stmt_store_result(mysqli_stmt stmt);

Следует вызвать mysqli_stmt_store_result для каждого запроса, который успешно производит набор результатов (SELECT, SHOW, DESCRIBE, EXPLAIN), и только если Вы хотите буферизовать полный набор результатов клиентом, так, чтобы последующее mysqli_stmt_fetch вызовите возвраты буферизованные данные.

Отметить

Является ненужным вызвать mysqli_stmt_store_result для других запросов, но если Вы делаете, это не будет вредить или вызывать известную производительность во всех случаях. Можно обнаружить ли запрос, произведенный набор результатов, проверяя если mysqli_stmt_result_metadata НУЛЬ возвратов.

Параметры

stmt

Процедурный стиль только: идентификатор оператора, возвращенный mysqli_stmt_init.

Возвращаемые значения

Возвраты TRUE на успехе или FALSE при отказе.

Примеры

Пример 22.180. Объектно-ориентированный стиль

<?php/* Open a connection */$mysqli = new mysqli("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";if ($stmt = $mysqli->prepare($query)) {    /* execute query */    $stmt->execute();    /* store result */    $stmt->store_result();    printf("Number of rows: %d.\n", $stmt->num_rows);    /* free result */    $stmt->free_result();    /* close statement */    $stmt->close();}/* close connection */$mysqli->close();?>

Пример 22.181. Процедурный стиль

<?php/* Open a connection */$link = mysqli_connect("localhost", "my_user", "my_password", "world");/* check connection */if (mysqli_connect_errno()) {    printf("Connect failed: %s\n", mysqli_connect_error());    exit();}$query = "SELECT Name, CountryCode FROM City ORDER BY Name LIMIT 20";if ($stmt = mysqli_prepare($link, $query)) {    /* execute query */    mysqli_stmt_execute($stmt);    /* store result */    mysqli_stmt_store_result($stmt);    printf("Number of rows: %d.\n", mysqli_stmt_num_rows($stmt));    /* free result */    mysqli_stmt_free_result($stmt);    /* close statement */    mysqli_stmt_close($stmt);}/* close connection */mysqli_close($link);?>   

Вышеупомянутые примеры выведут:

Number of rows: 20.

См. Также

mysqli_prepare
mysqli_stmt_result_metadata
mysqli_stmt_fetch