Maison >développement back-end >tutoriel php >Pourquoi ma fonction MySQLi `bind_param()` renvoie-t-elle une erreur « Appel à une fonction membre sur un non-objet » ?

Pourquoi ma fonction MySQLi `bind_param()` renvoie-t-elle une erreur « Appel à une fonction membre sur un non-objet » ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-09 10:06:12699parcourir

Why is My MySQLi `bind_param()` Function Throwing a

Mise à jour MySQLi lançant un appel à une fonction membre bind_param() Erreur

Problème :

MySQLi lance un "Appel à une fonction membre bind_param() sur une erreur non-objet" lors de la tentative de mise à jour des colonnes d'une table à l'aide de bind_param() méthode.

Cause :

La méthode bind_param() ne peut être appelée que sur un objet mysqli_stmt valide. L'erreur se produit car l'objet mysqli_stmt n'est pas créé correctement.

Solution :

Pour résoudre cette erreur :

  1. Vérifiez la requête SQL : Vérifiez que la requête SQL dans la méthode prepare() est syntaxiquement correct.
  2. Encapsuler les appels dans try/catch : Encapsulez l'appel prepare() dans un bloc try/catch pour gérer les exceptions.
  3. Vérifier les erreurs : Après avoir exécuté l'appel prepare(), utilisez $mysqli->error pour rechercher toute erreur messages.
  4. Utiliser PDO : Pensez à utiliser PDO (PHP Data Objects) au lieu de MySQLi. PDO fournit une interface plus orientée objet et simplifie les opérations de base de données.

Exemple avec PDO :

<?php
try {
  // Create PDO connection
  $pdo = new PDO('mysql:host=localhost;dbname=database', 'username', 'password');

  // Prepare update statement
  $stmt = $pdo->prepare("UPDATE questionnaire SET $key = ? WHERE id = ?");

  // Bind parameters
  $stmt->bindParam(1, $value, PDO::PARAM_STR); // Set the value parameter
  $stmt->bindParam(2, $rowid, PDO::PARAM_INT); // Set the rowID parameter

  // Execute update
  $stmt->execute();
} catch (PDOException $e) {
  trigger_error($e->getMessage(), E_USER_ERROR);
}

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