Maison > base de données > tutoriel mysql > Pourquoi mon instruction préparée mysqli renvoie-t-elle « Appel à une fonction membre exécuter () sur un non-objet » ?

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

DDD
Libérer: 2024-12-21 03:54:09
original
482 Les gens l'ont consulté

Why Does My mysqli Prepared Statement Return

Utilisation des instructions préparées mysqli

Lors de l'utilisation d'instructions préparées avec mysqli, il est essentiel de lier correctement les paramètres avant d'exécuter la requête.

Erreur de débogage

Le fourni le code rencontre l'erreur « Appel à une fonction membre exécuter () sur un non-objet » car la liaison des paramètres n'a pas été effectuée. Selon la documentation mysqli_prepare, les marqueurs de paramètres doivent être liés à l'aide de mysqli_stmt_bind_param avant de s'exécuter.

Exemple complet avec gestion des erreurs :

Ce qui suit est un exemple plus complet qui inclut liaison des paramètres, gestion des erreurs et démontre l'insertion et la récupération de données à l'aide de préparés déclarations :

<?php

// Establish database connection
$mysqli = new mysqli("localhost", "root", "root", "test");
if ($mysqli->connect_errno) {
    echo "Failed to connect to MySQL: " . $mysqli->connect_error;
    exit;
}

// Prepare insert statement
$stmt = $mysqli->prepare("INSERT INTO users (name, age) VALUES (?,?)");
if (!$stmt) {
    echo "Error preparing statement: " . $mysqli->error;
    exit;
}

// Bind parameters and insert one row
$name = 'One';
$age = 1;
$stmt->bind_param('si', $name, $age);
$stmt->execute();
if ($stmt->errno) {
    echo "Error executing insert: " . $stmt->error;
    exit;
}

// Insert another row with different values
$name = 'Two';
$age = 2;
$stmt->bind_param('si', $name, $age);
$stmt->execute();
if ($stmt->errno) {
    echo "Error executing insert: " . $stmt->error;
    exit;
}

// Prepare select statement
$stmt = $mysqli->prepare("SELECT name, age FROM users");
if (!$stmt) {
    echo "Error preparing statement: " . $mysqli->error;
    exit;
}

// Execute select statement and fetch results
$stmt->execute();
$result = $stmt->get_result();
if ($result->num_rows > 0) {
    while ($row = $result->fetch_assoc()) {
        echo "{$row['name']} is {$row['age']} years old<br>";
    }
}

// Close statement and connection
$stmt->close();
$mysqli->close();
?>
Copier après la connexion

Ce code gère les erreurs lors de la préparation, de l'exécution et de la récupération des résultats de l'instruction, fournissant une démonstration plus robuste de l'utilisation des instructions préparées.

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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal