mysqli::execute_query
mysqli_execute_query
(PHP 8 >= 8.2.0)
mysqli::execute_query -- mysqli_execute_query — Prepara, vincula parâmetros e executa a instrução SQL
Descrição
Estilo orientado a objetos
Estilo procedural
Prepara a consulta SQL, associa parâmetros e a executa. O método mysqli::execute_query() é um atalho para mysqli::prepare(), mysqli_stmt::bind_param(), mysqli_stmt::execute() e mysqli_stmt::get_result().
O modelo de instrução pode conter zero ou mais marcadores de parâmetro de
ponto de interrogação (?
) também chamados de espaços reservados.
Os valores dos parâmetros devem ser fornecidos como um array usando o
parâmetro params
.
Uma instrução preparada é criada, mas nunca é exposta fora da função. É impossível acessar as propriedades da instrução como faria com o objeto mysqli_stmt. Devido a essa limitação, as informações de status são copiadas para o objeto mysqli e estão disponíveis usando seus métodos, por exemplo mysqli_affected_rows() ou mysqli_error().
Note:
No caso em que uma instrução é passada para mysqli_execute_query() que é maior que
max_allowed_packet
do servidor, os códigos de erro retornados são diferentes dependendo do sistema operacional. O comportamento é o seguinte:
No Linux retorna um código de erro de 1153. A mensagem de erro significa
que o pacote é maior quemax_allowed_packet
bytes.No Windows retorna um código de erro 2006. Essa mensagem de erro significa
que o servidor foi desativado.
Parâmetros
-
mysql
Somente no estilo procedural: Um objeto mysqli retornado por mysqli_connect() ou mysqli_init()
query
-
A consulta, como uma string. Deve consistir em uma única instrução SQL.
A instrução SQL pode conter zero ou mais marcadores de parâmetro representados por caracteres de ponto de interrogação (
?
) nas posições apropriadas.Note:
Os marcadores são válidos apenas em determinados locais nas instruções SQL. Por exemplo, eles são permitidos na lista
VALUES()
de uma instruçãoINSERT
(para especificar valores de coluna para uma linha) ou em uma comparação com uma coluna em uma cláusulaWHERE
para especificar um valor de comparação. No entanto, eles não são permitidos para identificadores (como nomes de tabelas ou colunas). params
-
Um array opcional com tantos elementos quantos forem os parâmetros vinculados na instrução SQL que está sendo executada. Cada valor é tratado como uma string.
Valor Retornado
Retorna false
em caso de falha. Para consultas bem-sucedidas que produzem
um conjunto de resultados, como SELECT, SHOW, DESCRIBE
ou
EXPLAIN
, retorna um objeto
mysqli_result. Para outras consultas bem-sucedidas,
retorna true
.
Exemplos
Example #1 mysqli::execute_query() exemplo
Estilo orientado a objetos
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = $mysqli->execute_query($query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
Estilo procedural
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$query = 'SELECT Name, District FROM City WHERE CountryCode=? ORDER BY Name LIMIT 5';
$result = mysqli_execute_query($link, $query, ['DEU']);
foreach ($result as $row) {
printf("%s (%s)\n", $row["Name"], $row["District"]);
}
Os exemplos acima produzirão algo semelhante a:
Aachen (Nordrhein-Westfalen) Augsburg (Baijeri) Bergisch Gladbach (Nordrhein-Westfalen) Berlin (Berliini) Bielefeld (Nordrhein-Westfalen)
Veja Também
- mysqli_prepare() - Prepara uma instrução SQL para execução
- mysqli_stmt_execute() - Executa uma instrução preparada
- mysqli_stmt_bind_param() - Liga variáveis a uma declaração preparada como parâmetros
- mysqli_stmt_get_result() - Obtém um resultado de uma instrução preparada como um objeto mysqli_result