(PHP 5)
mysqli_stmt::prepare -- mysqli_stmt_prepare — Prepara uma declaração SQL para execução
Estilo orientado a objeto (método)
Estilo procedural:
Prepares the SQL query pointed to by the null-terminated string query.
Os marcadores de parâmetros devem ser ligados as variáveis da aplicação utilizando-se mysqli_stmt_bind_param() e/ou mysqli_stmt_bind_result() antes de executar a declaração ou trazer os resultados.
Apenas para estilo de procedimento: Um identificador de statement retornado por mysqli_stmt_init().
A query, como uma string. Deve conter somente uma única declaração SQL.
Você pode incluir um ou mais marcadores de parâmetros na declaração SQL colocando a interrogação (?) nas posições apropriadas.
Nota: Você não deve adicionar um ponto-e-virgula ou \g para terminar a declaração
Nota: Os marcadores são permitidos somente em alguns lugares das declarações SQL. Por exemplo, eles são permitidos na lista VALUES() de um INSERT (para especificar valores das colunas em uma linha), ou na comparação de uma coluna na cláusula WHERE para especificar um valor de comparação.
Entretanto, eles não são permitidos em identificadores (como nomes de tabela e coluna, na lista que nomeia os nomes das colunas a serem retornados por uma declaração SELECT), ou para especificar ambos os operandos de um operador binário como o = sinal de igual. A última restrição é necessária pois seria impossÃvel determinar o tipo do parâmetro. No geral, os parâmetros são permitidos somente em declarações de Linguagem de Manipulação de Dados (no inglês DML), e não em Linguagem Definição de Dados (DDL).
Retorna TRUE em caso de sucesso ou FALSE em falhas.
Exemplo #1 Estilo orientado a objeto
<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* verifica coenxão */
if (mysqli_connect_errno()) {
printf("Conexão falhou: %s\n", mysqli_connect_error());
exit();
}
$cidade = "Curitiba";
/* cria uma declaração preparada */
$stmt = $mysqli->stmt_init();
if ($stmt->prepare("SELECT Estado FROM Cidade WHERE Nome=?")) {
/* atribui os parâmetros aos marcadores */
$stmt->bind_param("s", $cidade);
/* executa a query */
$stmt->execute();
/* atribui as variáveis de resultado */
$stmt->bind_result($estado);
/* busca o valor */
$stmt->fetch();
printf("%s está no estado %s\n", $cidade, $estado);
/* fecha a declaração */
$stmt->close();
}
/* fecha a conexão */
$mysqli->close();
?>
Exemplo #2 Estilo procedural
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* verifica coenxão */
if (mysqli_connect_errno()) {
printf("Conexão falhou: %s\n", mysqli_connect_error());
exit();
}
$cidade = "Curitiba";
/* cria uma declaração preparada */
$stmt = mysqli_stmt_init($link);
if (mysqli_stmt_prepare($stmt, 'SELECT Estado FROM Cidade WHERE Nome=?')) {
/* atribui os parâmetros aos marcadores */
mysqli_stmt_bind_param($stmt, "s", $cidade);
/* executa a query */
mysqli_stmt_execute($stmt);
/* atribui as variáveis de resultado */
mysqli_stmt_bind_result($stmt, $estado);
/* busca o valor */
mysqli_stmt_fetch($stmt);
printf("%s está no estado %s\n", $cidade, $estado);
/* fecha a declaração */
mysqli_stmt_close($stmt);
}
/* fecha a conexão */
mysqli_close($link);
?>
O exemplo acima irá imprimir:
Curitiba está no estado Paraná
mysqli_stmt_init() - Initializes a statement and returns an object for use with mysqli_stmt_prepare, mysqli_stmt_execute() - Executa uma preparada query, mysqli_stmt_fetch() - Obtém resultados de um preparado comando e os coloca nas determinadas variáveis, mysqli_stmt_bind_param() - Passa variáveis para um preparado comando como parâmetros, mysqli_stmt_bind_result() - Passa variáveis para um preparado comando por resultado armazenado mysqli_stmt_close() - Closes a prepared statement.