2010-08-30 6 views
0

Mon projet fonctionne correctement sur ma machine locale mais pas sur le serveur Web. Je pense que ce sont les procédures stockées, parce que l'erreur que je reçois est:Mon projet s'exécute correctement sur la machine locale, mais pas sur le serveur Web

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

Le classement de la base de données est « utf8_general_ci ».

Juste un exemple simple:

je une procédure stockée appelée bureaux:

CREATE PROCEDURE offices() 

BEGIN 

SELECT * FROM offices; 
END// 

et le code php:

<?php 
require ("db.php"); 

$db = dbConnect(); 

$result = $db->query("CALL offices()"); 

while(list($id, $city, $address) = $result->fetch_array()) 

echo "($id) $city: $address "; 

?> 
+2

Vous devez ajouter une vérification d'erreur à votre méthode 'query()'. – ZeissS

+1

Qu'est-ce que '$ db'? Une instance de MysqlI? – VolkerK

Répondre

1

Qu'est-ce qui se passe sur le serveur de base de données, lorsque vous CALL offices() manuellement? Des erreurs? Si je devais deviner, il semble que la fonction offices() n'est pas définie sur le serveur ou échoue lorsqu'elle est invoquée (la table offices n'existe pas?).

0

Pour moi, il semble que le résultat $ n'est pas un objet ou n'est pas initialisé. Pouvez-vous nous montrer le code dans votre bibliothèque db. Plus précisément, la fonction de requête ...

0

Assurez-vous que votre utilisateur db qui a été utilisé pour installer le schéma dispose de privilèges pour créer des procédures stockées. Si vous ne savez pas si elles sont sur le serveur, vous pouvez le faire

SELECT * FROM `information_schema`.`ROUTINES`; 

..pour voir quelles procédures ont été créées avec succès.

Gardez à l'esprit la majorité des services d'hébergement mutualisé ne prend pas en charge les déclencheurs, procédures, etc.

0

vous utilisez probablement une version différente de votre base de données sur le serveur distant. donc la méthode de requête échoue et ne retourne pas ce qui devrait retourner.

0

Votre authentification ne semble pas autorisée à utiliser les procédures DB sur le serveur

Questions connexes