mysqli_driver::$report_mode

mysqli_report

(PHP 5, PHP 7, PHP 8)

mysqli_driver::$report_mode -- mysqli_reportDefine o modo de relatório de erros do mysqli

Descrição

Estilo orientado a objetos

Estilo procedural

Dependendo das flags, ele define o modo de relatório de erros do mysqli como exceção, aviso ou nenhum. Quando definido como MYSQLI_REPORT_ALL ou MYSQLI_REPORT_INDEX, ele também informará sobre as consultas que não usam um índice (ou usam um índice incorreto).

A partir do PHP 8.1.0, a configuração padrão é MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Anteriormente, era MYSQLI_REPORT_OFF.

Parâmetros

flags

Flags suportadas
Nome Descrição
MYSQLI_REPORT_OFF Desativa os relatórios
MYSQLI_REPORT_ERROR Relatar erros de chamadas de função mysqli
MYSQLI_REPORT_STRICT Lance mysqli_sql_exception para erros em vez de avisos
MYSQLI_REPORT_INDEX Informa se nenhum índice ou índice inválido foi usado em uma consulta
MYSQLI_REPORT_ALL Define todas as opções (relatar tudo)

Valor Retornado

Retorna true.

Registro de Alterações

Versão Descrição
8.1.0 O valor padrão agora é MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT. Anteriormente, era MYSQLI_REPORT_OFF.

Exemplos

Exemplo #1 Estilo orientado a objetos

<?php

/* ativar relatórios */
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL;

try {
/* se a conexão falhar, um mysqli_sql_exception será lançado */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");

/* esta consulta deve relatar um erro */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* esta consulta deve relatar um índice ruim se a população da coluna não tiver um índice */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
error_log($e->__toString());
}

Exemplo #2 Estilo procedural

<?php

/* ativar relatórios */
mysqli_report(MYSQLI_REPORT_ALL);

try {
/* se a conexão falhar, um mysqli_sql_exception será lançado */
$link = mysqli_connect("localhost", "my_user", "my_password", "my_db");

/* esta consulta deve relatar um erro */
$result = mysqli_query($link, "SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* esta consulta deve relatar um índice ruim se a população da coluna não tiver um índice */
$result = mysqli_query($link, "SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
error_log($e->__toString());
}

Exemplo #3 Relatório de erros, exceto erros de índice ruim

<?php

/* ativar relatórios */
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

try {
/* se a conexão falhar, um mysqli_sql_exception será lançado */
$mysqli = new mysqli("localhost", "my_user", "my_password", "my_db");

/* esta consulta deve relatar um erro */
$result = $mysqli->query("SELECT Name FROM Nonexistingtable WHERE population > 50000");

/* isso NÃO relatará nenhum erro, mesmo que o índice não esteja disponível */
$result = $mysqli->query("SELECT Name FROM City WHERE population > 50000");
} catch (
mysqli_sql_exception $e) {
error_log($e->__toString());
}

Veja Também

add a note add a note

User Contributed Notes 2 notes

up
4
nineoclick (atsymbol) gmail (dot) com
6 years ago
Seems not clear but flags *could be combined*, as per other flags.
For example:

<?php

# wannabe noticed about all errors except those about indexes
$driver = new mysqli_driver();
$driver->report_mode = MYSQLI_REPORT_ALL & ~MYSQLI_REPORT_INDEX;

?>
up
1
welfordmartin at gmail dot com
3 years ago
As a recommendaton on memory management please don't use the objective way your creating an object to specify one property and thats all your doing with it, much more effective both for the parser and for memory to use the proccedual style for setting the report flag.
To Top