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
Libérer: 2024-12-09 18:07:15
original
169 Les gens l'ont consulté

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 ...
Copier après la connexion

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);
Copier après la connexion

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();

?>
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal