(PHP 5, PHP 7, PHP 8)
mysqli_stmt::bind_param -- mysqli_stmt_bind_param — Liga variáveis a uma declaração preparada como parâmetros
Estilo orientado a objetos
Estilo procedural
Liga variáveis para os marcadores de parâmetros na declaração SQL preparada por mysqli_prepare() ou mysqli_stmt_prepare().
Nota:
Se o tamanho de dados de um variável exceder o tamanho de pacote máximo permitido (max_allowed_packet), deve-se especificar
bemtypese usar mysqli_stmt_send_long_data() para enviar os dados em pacotes.
Nota:
Deve-se ter cuidado ao usar mysqli_stmt_bind_param() em conjunto com call_user_func_array(). Note que mysqli_stmt_bind_param() requer que os parâmetros sejam passados por referência, enquanto que call_user_func_array() pode aceitar como parâmetro uma lista de variáveis que podem representar referências ou valores.
statementtypesUma string que contém um ou mais caracteres que especificam os tipos para as variáveis correspondentes ligadas:
| Caractere | Descrição |
|---|---|
| i | variável correspondente tem tipo int |
| d | variável correspondente tem tipo float |
| s | variável correspondente tem tipo string |
| b | variável correspondente é um blob e será enviada em pacotes |
varvars
O número de variáveis e o comprimento da string
que o parâmetro types deve corresponder aos parâmetros na declaração.
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.
Exemplo #1 Exemplo de mysqli_stmt::bind_param()
Estilo orientado a objetos
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
$stmt->bind_param('sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
$stmt->execute();
printf("%d linha inserida.\n", $stmt->affected_rows);
/* Limpa tabela CountryLanguage */
$mysqli->query("DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d linha apagada.\n", $mysqli->affected_rows);Estilo procedural
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$link = mysqli_connect('localhost', 'my_user', 'my_password', 'world');
$stmt = mysqli_prepare($link, "INSERT INTO CountryLanguage VALUES (?, ?, ?, ?)");
mysqli_stmt_bind_param($stmt, 'sssd', $code, $language, $official, $percent);
$code = 'DEU';
$language = 'Bavarian';
$official = "F";
$percent = 11.2;
mysqli_stmt_execute($stmt);
printf("%d linha inserida.\n", mysqli_stmt_affected_rows($stmt));
/* Limpa tabela CountryLanguage */
mysqli_query($link, "DELETE FROM CountryLanguage WHERE Language='Bavarian'");
printf("%d linha apagada.\n", mysqli_affected_rows($link));Os exemplos acima produzirão:
1 linha inserida. 1 linha apagada.
Exemplo #2 Usando ... para fornecer argumentos
O operador ... pode ser usado para fornecer uma lista de argumentos
de comprimento variável, como por exemplo em uma cláusula WHERE IN.
<?php
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'world');
$stmt = $mysqli->prepare("SELECT Language FROM CountryLanguage WHERE CountryCode IN (?, ?)");
/* Usando ... para fornecer argumentos */
$stmt->bind_param('ss', ...['DEU', 'POL']);
$stmt->execute();
$stmt->store_result();
printf("%d linhas encontradas.\n", $stmt->num_rows());Os exemplos acima produzirão:
10 linhas encontradas.