2010-11-03 7 views
0

J'essaie d'établir une connexion PHP (5.2.6)/MySQL via mysqli.Qu'est-ce qui me manque dans cette connexion?

error_log(sprintf('Querying %s:%s (%s) as %s/%s', DBHOST, DBPORT, DBNAME, DBUSER, DBPASSWORD)); 

$mysqli = @new mysqli(DBHOST, DBUSER, DBPASSWORD, DBNAME, DBPORT); 

if(!$mysqli) { 
    error_log('Unable to establish a connection to ' . DBHOST . '.' . DBNAME . ': ' . mysqli_connect_error()); 
    exit('Unable to connect to the db.'); 
} 
else { 
    error_log('--> mysqli connection established'); 
} 

... more stuff ... 

Le résultat de ce code est que le initial écrire à error_log se produit (ce qui confirme que les constantes sont définies correctement), mais rien d'autre. Rien. Tout s'arrête juste autant que je peux dire. Aucun message de connexion impossible, aucun message de connexion établie. Juste rien. Je peux me connecter à MySQL directement en utilisant les paramètres définis par les constantes (copiés et collés à partir de l'impression du journal).

J'ai lu sur le bogue dans les versions de PHP antérieures à 5.2.9 et j'ai essayé différentes façons de détecter une erreur, mais il n'y a pas de changements. Tout s'arrête et je commence à perdre la tête en essayant de comprendre ce que je peux faire d'autre.

Quelqu'un a déjà vu ça? MySQLi semble être installé - validé par sa présence dans la sortie de phpinfo() et par un test pour function_exists(mysqli_connect). Ai-je manqué quelque chose d'évident parce que je suis trop concentré sur les détails?

Toutes les pensées seraient appréciées.

MISE À JOUR

Quand je dit: « Je l'ai essayé différentes façons de détecter une erreur », j'aurais été plus clair. Aucune autre variante n'inclut la sortie de silence avec le "@". S'il vous plaît ne vous concentrez pas là-dessus. Cela n'a été inclus dans ma dernière tentative basée sur quelque chose lu dans les docs PHP.

+2

Supprimez le '@' de '@ new' et publiez des erreurs ou des avertissements par PHP. –

+0

C'est ce que je voulais dire à propos d'autres tentatives. Utiliser le "@" et tester "! $ Mysqli' n'a été que la dernière chose que j'ai essayée. Rien avant alors fait taire toute sortie. –

+0

Tout d'abord, supprimez le '@' lorsque vous déboguez. Deuxièmement: avez-vous essayé de supprimer toutes les fonctions de error_log et juste d'instancier la classe mysli? Si oui, qu'est-ce qui se passe? Pouvez-vous vous connecter? – Shoe

Répondre

0

Alors d'abord, une excuse. Je travaille dans un environnement inconnu et je ne savais pas que la journalisation des erreurs était désactivée. J'ai allumé cela par ini_set('log_errors', true) et j'ai commencé à obtenir les informations dont j'avais besoin. Je laisse cela juste au cas où quelqu'un d'autre a besoin de chercher le même problème.

+0

S'il vous plaît signaler comme répondu – symcbean

+0

Je le ferai, mais ne peut pas jusqu'à ce que la période d'attente expire. –