Php mysql определить запрос

mysqli_info

Функция mysqli_info() возвращает строку с информацией о последнем выполненном запросе к базе данных. Описание строки приведено ниже:

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

Тип запроса Пример результирующей строки
INSERT INTO. SELECT. Records: 100 Duplicates: 0 Warnings: 0
INSERT INTO. VALUES (. ),(. ),(. ) Records: 3 Duplicates: 0 Warnings: 0
LOAD DATA INFILE . Records: 1 Deleted: 0 Skipped: 0 Warnings: 0
ALTER TABLE . Records: 3 Duplicates: 0 Warnings: 0
UPDATE . Rows matched: 40 Changed: 40 Warnings: 0

Замечание:

Запросы, не попадающие в приведённый список, не поддерживаются. В таких ситуациях mysqli_info() вернёт пустую строку.

Список параметров

Только для процедурного стиля: объект mysqli , полученный с помощью mysqli_connect() или mysqli_init() .

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

Строка символов представляющая дополнительную информацию о последнем запущенном запросе.

Примеры

Пример #1 Пример использования $mysqli->info

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «localhost» , «my_user» , «my_password» , «world» );

$mysqli -> query ( «CREATE TEMPORARY TABLE t1 LIKE City» );

/* INSERT INTO . SELECT */
$mysqli -> query ( «INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150» );
printf ( «%s\n» , $mysqli -> info );
?>

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$link = mysqli_connect ( «localhost» , «my_user» , «my_password» , «world» );

mysqli_query ( $link , «CREATE TEMPORARY TABLE t1 LIKE City» );

/* INSERT INTO . SELECT */
mysqli_query ( $link , «INSERT INTO t1 SELECT * FROM City ORDER BY ID LIMIT 150» );
printf ( «%s\n» , mysqli_info ( $link ));
?>

Результат выполнения данных примеров:

Records: 150 Duplicates: 0 Warnings: 0

Смотрите также

  • mysqli_affected_rows() — Получает число строк, затронутых предыдущей операцией MySQL
  • mysqli_warning_count() — Возвращает количество предупреждений из последнего запроса заданного подключения
  • mysqli_num_rows() — Получает количество строк в наборе результатов

Источник

Php mysql определить запрос

За выполнение запросов отвечают функции mysqli::query() , mysqli::real_query() и mysqli::multi_query() . Чаще всего применяется функция mysqli::query() , так как она выполняет сразу две задачи: выполняет запрос и буферизует на клиенте результат этого запроса (если он есть). Вызов mysqli::query() идентичен последовательному вызову функций mysqli::real_query() и mysqli::store_result() .

Пример #1 Выполнение запросов

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «example.com» , «user» , «password» , «database» );

$mysqli -> query ( «DROP TABLE IF EXISTS test» );
$mysqli -> query ( «CREATE TABLE test(id INT)» );

Буферизация результатов запроса

После выполнения запроса результаты можно либо получить сразу, либо считать строку за строкой с сервера. Буферизация набора результатов на стороне клиента позволяет серверу как можно раньше высвободить ресурсы, связанные с результатами запроса. Проще говоря, клиенты медленно используют наборы результатов. Поэтому рекомендуется использовать буферизованные наборы результатов. mysqli::query() объединяет выполнение запроса и буферизацию набора результатов.

PHP-приложения могут свободно оперировать данными внутри буферизованных результирующих наборов. Быстрая навигация по строкам наборов обусловлена тем, что наборы полностью располагаются в памяти клиента. Следует помнить, что зачастую обработка результатов на клиенте проще, нежели средствами сервера.

Пример #2 Навигация по строкам буферизованной результирующей таблицы

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «example.com» , «user» , «password» , «database» );

$mysqli -> query ( «DROP TABLE IF EXISTS test» );
$mysqli -> query ( «CREATE TABLE test(id INT)» );
$mysqli -> query ( «INSERT INTO test(id) VALUES (1), (2), (3)» );

$result = $mysqli -> query ( «SELECT id FROM test ORDER BY id ASC» );

echo «Обратный порядок. \n» ;
for ( $row_no = $result -> num_rows — 1 ; $row_no >= 0 ; $row_no —) $result -> data_seek ( $row_no );
$row = $result -> fetch_assoc ();
echo » id color: #007700″>. $row [ ‘id’ ] . «\n» ;
>

echo «Исходный порядок строк. \n» ;
foreach ( $result as $row ) echo » id color: #007700″>. $row [ ‘id’ ] . «\n» ;
>

Результат выполнения данного примера:

Обратный порядок. порядок строк.

Небуферизованные результирующие наборы

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

Пример #3 Навигация по строкам небуферизованной результирующей таблицы

$mysqli -> real_query ( «SELECT id FROM test ORDER BY id ASC» );
$result = $mysqli -> use_result ();

echo «Порядок строк в результирующем наборе. \n» ;
foreach ( $result as $row ) echo » id color: #007700″>. $row [ ‘id’ ] . «\n» ;
>

Типы данных значений в результирующей таблице

Функции mysqli::query() , mysqli::real_query() и mysqli::multi_query() предназначены для выполнения не подготавливаемых запросов. На уровне протокола клиент-серверного взаимодействия MySQL за выполнение запросов отвечают команда COM_QUERY и текстовый протокол. Когда используется текстовый протокол, сервер MySQL перед отправкой клиенту преобразует все данные в результирующем наборе в текстовые строки. Это преобразование выполняется вне зависимости от типа данных SQL-столбца результирующей таблицы. Клиентские библиотеки mysql, в свою очередь, получают все данные, принимая их за строки. На клиенте не проводится никакого обратного преобразования к исходным типам, все данные, полученные приложением остаются PHP строками.

Пример #4 Текстовый протокол по умолчанию возвращает строки

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );
$mysqli = new mysqli ( «example.com» , «user» , «password» , «database» );

$mysqli -> query ( «DROP TABLE IF EXISTS test» );
$mysqli -> query ( «CREATE TABLE test(id INT, label CHAR(1))» );
$mysqli -> query ( «INSERT INTO test(id, label) VALUES (1, ‘a’)» );

$result = $mysqli -> query ( «SELECT id, label FROM test WHERE > );
$row = $result -> fetch_assoc ();

printf ( «id = %s (%s)\n» , $row [ ‘id’ ], gettype ( $row [ ‘id’ ]));
printf ( «label = %s (%s)\n» , $row [ ‘label’ ], gettype ( $row [ ‘label’ ]));

Результат выполнения данного примера:

id = 1 (string) label = a (string)

Если используется библиотека mysqlnd, можно включить преобразование целочисленных значений и чисел с плавающей точкой из столбцов таблицы в PHP числа. Делается это заданием настройки подключения MYSQLI_OPT_INT_AND_FLOAT_NATIVE . В таком случае mysqlnd будет проверять метаданные столбцов и преобразовывать SQL-числа этих полей в PHP-числа, если эти значения не выходят за рамки допустимых диапазонов типов данных PHP. То есть, например, SQL INT число попадёт в PHP приложение в виде целого (integer).

Пример #5 Получение исходных типов данных в приложении

mysqli_report ( MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT );

$mysqli = new mysqli ();
$mysqli -> options ( MYSQLI_OPT_INT_AND_FLOAT_NATIVE , 1 );
$mysqli -> real_connect ( «example.com» , «user» , «password» , «database» );

$mysqli -> query ( «DROP TABLE IF EXISTS test» );
$mysqli -> query ( «CREATE TABLE test(id INT, label CHAR(1))» );
$mysqli -> query ( «INSERT INTO test(id, label) VALUES (1, ‘a’)» );

$result = $mysqli -> query ( «SELECT id, label FROM test WHERE > );
$row = $result -> fetch_assoc ();

printf ( «id = %s (%s)\n» , $row [ ‘id’ ], gettype ( $row [ ‘id’ ]));
printf ( «label = %s (%s)\n» , $row [ ‘label’ ], gettype ( $row [ ‘label’ ]));

Результат выполнения данного примера:

id = 1 (integer) label = a (string)

Источник

mysql_info

Данное расширение устарело, начиная с версии PHP 5.5.0, и будет удалено в будущем. Используйте вместо него MySQLi или PDO_MySQL. Смотрите также инструкцию MySQL: выбор API и соответствующий FAQ для получения более подробной информации. Альтернативы для данной функции:

Описание

Возвращает подробную информацию о последнем запросе.

Список параметров

Соединение MySQL. Если идентификатор соединения не был указан, используется последнее соединение, открытое mysql_connect() . Если такое соединение не было найдено, функция попытается создать таковое, как если бы mysql_connect() была вызвана без параметров. Если соединение не было найдено и не смогло быть создано, генерируется ошибка уровня E_WARNING .

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

Возвращает информацию о запросе в случае успеха, или FALSE в случае ошибки. Смотрите пример ниже для каких запросов возвращается информация и как выглядят возвращаемые значения. Для не перечисленных запросов будет возвращено значение FALSE .

Примеры

Пример #1 Корректные виды запросов MySQL

Числа расставлены только для примера — их значения зависят от результата запроса.

INSERT INTO . SELECT . String format: Records: 23 Duplicates: 0 Warnings: 0 INSERT INTO . VALUES (. ),(. ),(. ). String format: Records: 37 Duplicates: 0 Warnings: 0 LOAD DATA INFILE . String format: Records: 42 Deleted: 0 Skipped: 0 Warnings: 0 ALTER TABLE String format: Records: 60 Duplicates: 0 Warnings: 0 UPDATE String format: Rows matched: 65 Changed: 65 Warnings: 0

Примечания

Замечание:

mysql_info() возвращает значение не равное FALSE для INSERT . VALUES только в том случае, если в запросе присутствует несколько списков значений.

Смотрите также

  • mysql_affected_rows() — Возвращает число затронутых прошлой операцией рядов
  • mysql_insert_id() — Возвращает идентификатор, сгенерированный при последнем INSERT-запросе
  • mysql_stat() — Возвращает текущий статус сервера

Источник

Читайте также:  Html теги размеров size
Оцените статью