Maison >développement back-end >tutoriel php >Pourquoi mon instruction préparée MySQLi renvoie-t-elle une erreur « Appel à une fonction membre exécuter () sur un non-objet » ?

Pourquoi mon instruction préparée MySQLi renvoie-t-elle une erreur « Appel à une fonction membre exécuter () sur un non-objet » ?

Barbara Streisand
Barbara Streisandoriginal
2024-12-09 18:07:15170parcourir

Why Does My MySQLi Prepared Statement Throw a

Comprendre les instructions préparées par mysqli

Lors de l'utilisation d'instructions préparées avec mysqli, il est important de respecter des directives spécifiques pour garantir un bon fonctionnement.

Résoudre l'erreur

Dans le code fourni, le erreur :

Fatal error: Call to a member function execute() on a non-object in ...

suggère que l'instruction préparée n'est pas correctement liée aux variables avant l'exécution. Pour résoudre ce problème :

// Bind parameters to variables
$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);

Utilisation de mysqli pour les instructions préparées

Mysqli est un choix approprié pour utiliser des instructions préparées en PHP. Il s'agit d'une interface de base de données établie et bien documentée.

Exemple complet avec des instructions préparées

<?php

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

// Prepare statement
$stmt = $mysqli->prepare('INSERT INTO users (name, age) VALUES (?, ?)');

// Bind variables
$name = 'one';
$age = 2;
$stmt->bind_param('si', $name, $age);

// Insert data with prepared statement
$stmt->execute();

// Check for errors
if ($mysqli->error) {
    echo 'Error: ' . $mysqli->error;
} else {
    // Data inserted successfully
}

// Prepare select statement
$stmt = $mysqli->prepare('SELECT * FROM users WHERE name = ?');

// Bind variable
$name = 'one';
$stmt->bind_param('s', $name);

// Execute select query
$stmt->execute();

// Fetch results
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo $row['id'] . ' - ' . $row['name'] . ' - ' . $row['age'] . '<br>';
}

// Close statement and connection
$stmt->close();
$mysqli->close();

?>

Cet exemple complet montre l'ensemble du processus depuis l'établissement d'une connexion jusqu'à l'insertion et la sélection de données avec des instructions préparées, y compris la gestion des erreurs.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn