"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como usar efetivamente instruções preparadas em MySQL com PHP?

Como usar efetivamente instruções preparadas em MySQL com PHP?

Publicado em 2024-12-21
Navegar:386

How to Effectively Use Prepared Statements in MySQL with PHP?

Introdução às instruções preparadas no MySQL

As instruções preparadas são uma ferramenta essencial para escrever consultas SQL seguras e eficientes. Neste artigo, exploraremos como usar instruções preparadas com mysqli, a extensão MySQLi em PHP.

Erro de sintaxe: execução sem objeto

O erro que você encontra , "Erro fatal: chamada para uma função de membro execute() em um não objeto", normalmente indica que a variável $stmt não foi inicializada corretamente ou é um objeto. Veja como corrigi-lo:

$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");

Certifique-se de ter um conexão válida com o banco de dados antes de continuar.

Parâmetros de vinculação

As instruções preparadas usam marcadores de parâmetro (por exemplo,?) para representar valores de entrada. Esses valores precisam ser vinculados às variáveis ​​PHP antes de executar a instrução. Aqui está um exemplo:

$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);

Neste exemplo, vinculamos o parâmetro name como uma string ('s') e o parâmetro idade como um número inteiro ('i ').

Executando a instrução

Depois que os parâmetros estiverem vinculados, você pode executar o preparado instrução:

$stmt->execute();

Tratamento de erros

As instruções preparadas fornecem melhor tratamento de erros do que consultas SQL diretas. Use o método mysqli_stmt::error para recuperar mensagens de erro:

if ($stmt->error) {
    die("Error: " . $stmt->error);
}

Exemplo completo

Aqui está um exemplo completo de inserção, seleção e tratamento de erros:

// Establish connection
$mysqli = new mysqli("localhost", "root", "root", "test");

// Prepare and bind parameters
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
$stmt->bind_param('si', $name, $age);

// Insert multiple rows
$name = 'one';
$age = 1;
$stmt->execute();
$name = 'two';
$age = 2;
$stmt->execute();

// Prepare and execute select statement
$stmt = $mysqli->prepare("SELECT * FROM users");
$stmt->execute();

// Bind result
$result = $stmt->get_result();

// Process results
while ($row = $result->fetch_assoc()) {
    echo $row['name'] . ", " . $row['age'] . "
\n"; } // Handle errors if ($stmt->error) { die("Error: " . $stmt->error); }

Usando instruções preparadas, você pode evitar ataques de injeção de SQL e escrever consultas SQL mais robustas e eficientes.

Tutorial mais recente Mais>

Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.

Copyright© 2022 湘ICP备2022001581号-3