mysqli::execute_query

mysqli_execute_query

(PHP 8 >= 8.2.0)

mysqli::execute_query -- mysqli_execute_queryPrepara, vincula parâmetros e executa a instrução SQL

Descrição

Estilo orientado a objetos

public mysqli::execute_query(string $query, ?array $params = null): mysqli_result|bool

Estilo procedural

mysqli_execute_query(mysqli $mysql, string $query, ?array $params = null): mysqli_result|bool

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().

Nota:

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 que max_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.

Nota:

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ção INSERT (para especificar valores de coluna para uma linha) ou em uma comparação com uma coluna em uma cláusula WHERE 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

Exemplo #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

add a note add a note

User Contributed Notes 1 note

up
0
theking2(at)king(dot).co.
1 year ago
A function to call a stored procedure with an arbitrary number of IN parameters and one OUT parameter, for instance returning affected row count. The return value of yhe function is this value.

<?php

/**
* call_sp Call the specified stored procedure with the given parameters.
* The first parameter is the name of the stored procedure.
* The remaining parameters are the (in) parameters to the stored procedure.
* the last (out) parameter should be an int, like state or number of affected rows.
*
* @param  mixed $sp_name The name of the stored procedure to call.
* @param  mixed $params The parameters to pass to the stored procedure.
* @return int The number of affected rows.
*/
function call_sp( \mysqli $db, string $sp_name, ...$params ): int
{
 
$sql = "CALL $sp_name( ";
 
$sql .= implode( ", ", array_fill( 0, count( $params ), "?" ) );
 
$sql .= ", @__affected );";

 
$result   = $db->execute_query( $sql, $params );
 
$result   = $db->query( "select @__affected;" );
 
$affected = (int) $result->fetch_column( 0 );
  return
$affected;
}
To Top