Erreur fatale: appel d'une fonction membre fetch_array() sur boolean
Je suis le "Fatal error: appel à une fonction membre fetch_array() sur boolean dans..." erreur lorsque vous tentez d'exécuter mon script php. Le code en question est ici:
function backup()
{
global $mysqli;
$bup = "SELECT p.product_id, p.ean, p.image, p.model, p.status, p.price_sync, p.modified_by, p.date_modified, pd.name, pd.description, pd.language_id, pd.meta_description, pd.meta_keyword, pd.tag FROM oc_product p INNER JOIN oc_product_description pd ON p.product_id = pd.product_id";
$backup = $mysqli->query($bup);
$megainsert = "REPLACE INTO oc_product_backup(product_id, ean, image, model, status, price_sync, modified_by, date_modified, name, description, language_id, meta_description, meta_keyword, tag) VALUES ";
while($row = $backup->fetch_array(MYSQLI_ASSOC))
{
$product_id = $mysqli->real_escape_string($row['product_id']);
$ean = $mysqli->real_escape_string($row['ean']);
$image = $mysqli->real_escape_string($row['image']);
$model = $mysqli->real_escape_string($row['model']);
$name = $mysqli->real_escape_string($row['name']);
$description = $mysqli->real_escape_string($row['description']);
$meta_description = $mysqli->real_escape_string($row['meta_description']);
$meta_keyword = $mysqli->real_escape_string($row['meta_keyword']);
$tag = $mysqli->real_escape_string($row['tag']);
$megainsert .= "('".$product_id."', '".$ean."', '".$image."', '".$model."', '".$row['status']."', '".$row['price_sync']."', '".$row['modified_by']."', '".$row['date_modified']."', '".$name."', '".$description."', '".$row['language_id']."', '".$meta_description."', '".$meta_keyword."', '".$tag."'),";
}
$backup->close();
$megainsert = substr_replace($megainsert, "", -1);
$dobackup = $mysqli->query($megainsert);
if(!$dobackup) return $mysqli->error;
else return true;
}
la ligne suivante est où le problème est:
while($row = $backup->fetch_array(MYSQLI_ASSOC))
Le code juste avant la fonction ci-dessus est comme suit:
function clearBackupPrices()
{
global $mysqli;
$clean = "TRUNCATE TABLE oc_product_price_backup";
$doclean = $mysqli->query($clean);
if(!$doclean) return $mysqli->error;
else return true;
}
J'ai fait des recherches et le regarda dans les autres réponses à la même question, mais n'avait aucune chance de le résoudre. Quelqu'un aurait-il une suggestion pour mon problème, s'il vous plaît? Je vous remercie tous à l'avance.
- Je crois que j'ai trouvé le problème. découvrez ma réponse
- Pouvez-vous ajouter la ligne
if(!$backup) print_r($mysqli->error);
et de nous montrer toute sortie... - Unknown column 'p.price_sync' in 'field list' - le résultat que j'ai obtenu après l'ajout de la ligne, comme l'a suggéré. @ImClarky
- Ainsi que doit vous donner les informations dont vous avez besoin. Soit la colonne
price_snyc
n'existent pas dans laoc_product
table, ou il ya quelque chose comme une faute de frappe... - Maintenant que j'ai ajouté th colonnes manquantes dans le tableau, j'obtiens l'erreur suivante: Warning: stream_socket_enable_crypto(): SSL opération a échoué avec le code 1. OpenSSL messages d'Erreur: erreur:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificat de vérifier échoué dans .../class.smtp.php sur la ligne 338
- découvrez cette question. Voir si cela aide 🙂
Vous devez vous connecter pour publier un commentaire.
De la la documentation php, MySQLi::query ():
Cela signifie que la requête suivante est un échec (et donc de faire
$backup = FALSE
plutôt que d'un objet qui explique votre déclaration d'erreurs):Qui à son tour signifie que l'instruction sql
$bup
est à l'origine d'une erreur. Je vous recommandons d'examiner et de votre table. Il semble que l'erreur n'est pas une erreur de syntaxe (car une erreur de syntaxe aurait causé encore plus de message d'erreur), ce qui signifie que MySQL peut lire votre déclaration, mais l'opération échoue pour une raison quelconque. Vous devrez revoir votre instruction SQL ainsi que votre table et voir ce que la faille dans la logique.