mysqli::prepare
mysqli_prepare
(PHP 5, PHP 7, PHP 8)
mysqli::prepare -- mysqli_prepare — Prepara uma instrução SQL para execução
Descrição
Estilo orientado a objetos
Estilo procedural
Prepara a consulta SQL e retorna um identificador de instrução a ser usado para outras operações na instrução. A consulta deve consistir em uma única instrução SQL.
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 marcadores de parâmetro devem ser vinculados às variáveis do aplicativo usando
mysqli_stmt_bind_param() antes de executar a instrução.
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).
Valor Retornado
mysqli_prepare() retorna um objeto de instrução ou false
se ocorreu um erro.
Erros/Exceções
Se o relatório de erros da extensão mysqli estiver habilitado (MYSQLI_REPORT_ERROR
) e a operação solicitada falhar,
um aviso será gerado. Se, além disso, o modo for definido como MYSQLI_REPORT_STRICT
,
uma exceção mysqli_sql_exception será lançada em vez do aviso.
Exemplos
Example #1 mysqli::prepare() exemplo
Estilo orientado a objetos
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
$city = "Amersfoort";
/* criar uma declaração preparada */
$stmt = $mysqli->prepare("SELECT District FROM City WHERE Name=?");
/* parâmetros de ligação para marcadores */
$stmt->bind_param("s", $city);
/* executar consulta */
$stmt->execute();
/* vincular variáveis de resultado */
$stmt->bind_result($district);
/* buscar valor */
$stmt->fetch();
printf("%s está no distrito %s\n", $city, $district);
Estilo procedural
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
$city = "Amersfoort";
/* criar uma declaração preparada */
$stmt = mysqli_prepare($link, "SELECT District FROM City WHERE Name=?");
/* parâmetros de ligação para marcadores */
mysqli_stmt_bind_param($stmt, "s", $city);
/* executar consulta */
mysqli_stmt_execute($stmt);
/* vincular variáveis de resultado */
mysqli_stmt_bind_result($stmt, $district);
/* buscar valor */
mysqli_stmt_fetch($stmt);
printf("%s está no distrito %s\n", $city, $district);
Os exemplos acima produzirão:
Amersfoort está no distrito de Utrecht
Veja Também
- mysqli_stmt_execute() - Executa uma instrução preparada
- mysqli_stmt_fetch() - Recebe resultados de uma instrução preparada nas variáveis vinculadas
- mysqli_stmt_bind_param() - Liga variáveis a uma declaração preparada como parâmetros
- mysqli_stmt_bind_result() - Liga variáveis a uma declaração preparada para armazenamento de resultado
- mysqli_stmt_get_result() - Obtém um resultado de uma instrução preparada como um objeto mysqli_result
- mysqli_stmt_close() - Fecha uma instrução preparada