2009-05-21 6 views
1

RESOLU: J'ai écrit et testé un script PHP sur le serveur local. (Rien d'extraordinaire, seulement 2 insertions SQL consécutives dans la même base de données, mais différentes tables).Requête SQL fonctionne sur le serveur de test mais pas en direct ... quelle pourrait être la différence?

Les deux serveurs fonctionnent & MYSQL 5. PHP5

Sur le serveur local, les deux requêtes sont traitées correctement.

Sur le serveur live, seule la première requête fonctionne, mais pas la seconde et je n'arrive pas à comprendre pourquoi.

Voici le code:

$sql_login = "INSERT INTO logintbl 
       (...) 
      VALUES (...)"; 
    $result_login = mysqli_query($this->connect, $sql_login); 

    # Fill contact details 
    $sql_contactD = "INSERT INTO contactDetails 
        (...) 
     VALUES (...)"; 
    $result_contactD = mysqli_query($this->connect, $sql_contactD); 

Sur mon serveur local, les deux requêtes renvoient true et les données sont ajoutées dans la base de données.

Sur mon serveur actif, la première requête fonctionne comme prévu, mais la deuxième requête échoue sans aucun message d'erreur.

Bien sûr, les structures de table sont identiques sur les deux serveurs. Les deux tables se trouvent dans la même base de données et l'utilisateur dispose de droits suffisants sur la base de données.

Une indication sur ce qui pourrait être faux?


Édition 1: Autorisations: Oui, l'utilisateur dispose des autorisations adéquates sur les deux tables.


Edit 2: Je me sens très stupide, mais suivant les conseils de James de vérifier mysqli_error(), je trouve que le serveur de production est sensible à la casse en ce qui concerne les noms de table, contrairement à mon serveur de test, et que il a converti le nom d'origine de ma table (contactDetails) en minuscules (détails de contact).

Merci à tous pour votre aide.

+0

Avez-vous vérifié votre journal mysql pour un message d'erreur? –

+0

Essayez également "SHOW WARNINGS" après avoir exécuté la requête qui ne fonctionne pas. Cela renvoie des informations sur les avertissements, qui sont moins graves que les erreurs et n'affichent pas de message, sauf si vous en demandez un. –

+6

Vérifiez également la sortie de mysqli_error(). Est-ce que les serveurs de test et de production ont des paramètres de guillemets magiques différents?Autres réglages? –

Répondre

0

répondre à ma propre question, car il semble que la seule façon de fermer correctement:

Je me sens très stupide, mais après conseils James de vérifier mysqli_error(), je trouve que la serveur de production était le cas sensible en ce qui concerne les noms de tables, contrairement à mon serveur de test , et qu'il convertit le nom original de ma table (ContactDetails) en minuscules (ContactDetails).

0

avez-vous vérifié les permissions dans votre environnement de production? Signification avez-vous vérifié que vous avez insérer l'accès à contactDetails?

+0

Oui, désolé, j'aurais dû préciser, mais, oui, les autorisations sont adéquates. – Sylverdrag

0

Avez-vous essayé d'imprimer $ sql_contactD sur un écran (ou une page Web), puis d'exécuter exactement la même requête dans le navigateur de requêtes MySQL?

Questions connexes