Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 19/03/2018, à 21:57

nico_be83

Problème entre PHP et MySQL

Bonjour,

Je suis entrain de faire la configuration initiale d'un serveur sous Ubuntu qui exécute apache2, php et mysql et je suis confronté à un problème dont je ne parviens pas à trouver l'origine.

Depuis une page PHP, je parviens bien à me connecter à ma base de données (l'authentification réussi) que ce soit en PDO ou avec mysqli mais par contre la requête ne renvoie pas le moindre résultat, j'ai une page blanche et le code semble planter au niveau du fetch() quand on souhaite récupérer les données de la table.

Dois-je configurer un élément particulier dans mysql pour autoriser les requêtes provenant de PHP ? Pour l'instant j'ai juste créé un utilisateur ayant les droits de base sur la base de donnée à savoir SELECT, INSERT, UPDATE et DELETE.  C'est cet utilisateur qui se connecte via PHP et comme la connexion réussi mais que rien ne fonctionne ensuite je ne sais pas trop quoi faire d'autant plus que même après avoir activé les log de MySQL, aucune erreur n'apparait.

Précision complémentaire : Je suis certain que l'authentification passe car si je n'utilise pas le bon mot de passe, j'ai bien une erreur d'authentification qui apparait. 

D'avance merci pour vos réponses.

Dernière modification par nico_be83 (Le 19/03/2018, à 22:15)

Hors ligne

#2 Le 20/03/2018, à 00:38

youssoufB

Re : Problème entre PHP et MySQL

Est ce que tu as essayer de passer ta requête en mode console sur la base?


mail et moteur de recherche: Lilo

Hors ligne

#3 Le 20/03/2018, à 01:42

krodelabestiole

Re : Problème entre PHP et MySQL

nico_be83 a écrit :

la requête ne renvoie pas le moindre résultat, j'ai une page blanche

tu rencontres très probablement une erreur et celle-ci n'est pas affichée.
2 solutions : soit tu actives le rapport d'erreur de PHP, soit tu consultes le rapport d'erreur d'apache (ou de ton virtualhost).

avec un message d'erreur on aura déjà une base moins approximative pour chercher une solution.

Hors ligne

#4 Le 20/03/2018, à 11:05

nico_be83

Re : Problème entre PHP et MySQL

youssoufB a écrit :

Est ce que tu as essayer de passer ta requête en mode console sur la base?

Bonjour et merci de votre réponse.
Oui si j'exécute directement la requête SQL j'obtiens les résultats.


krodelabestiole a écrit :

tu rencontres très probablement une erreur et celle-ci n'est pas affichée.
2 solutions : soit tu actives le rapport d'erreur de PHP, soit tu consultes le rapport d'erreur d'apache (ou de ton virtualhost).

avec un message d'erreur on aura déjà une base moins approximative pour chercher une solution.

Un tout grand merci pour ta réponse, voici l'erreur qui inonde mon fichier log des errreurs PHP :

[client 127.0.0.1:38978] PHP Fatal error:  Uncaught Error: Call to a member function fetch() on boolean

J'espère que vous pourrez m'éclairer un peu...

Pour info voici le code de la page PHP que je tente d'exécuter :


<?php

try
{
$bdd = new PDO('mysql:host=localhost;dbname=test', 'admin', '');
}
catch (Exception $e)
{
die('Erreur : ' . $e->getMessage());
}
$reponse = $bdd->query("SELECT * FROM UTILISATEURS");
while ($donnees = $reponse->fetch())
{
	echo("Passage dans la bouche While");

}

?>

Modération : merci d'utiliser les balises code (explications ici).

Dernière modification par cqfd93 (Le 20/03/2018, à 11:50)

Hors ligne

#5 Le 20/03/2018, à 11:31

bruno

Re : Problème entre PHP et MySQL

Bonjour,

Merci d'utiliser les balises [ code ] (icône < >) pour le code et les retours de commandes. Ce sera beaucoup plus lisible.

Le message d'erreur t'indique que la méthode fetch ne peut être appliquée à un booléen. C'est donc que ta requête :

$reponse = $bdd->query("SELECT * FROM UTILISATEURS");

ne retourne pas un objet, mais échoue et retourne la valeur booléenne false. D'où l’intérêt de gérer les erreurs à tous les niveaux.

Dernière modification par bruno (Le 20/03/2018, à 11:31)

Hors ligne

#6 Le 20/03/2018, à 12:39

nico_be83

Re : Problème entre PHP et MySQL

bruno a écrit :

Bonjour,

Merci d'utiliser les balises [ code ] (icône < >) pour le code et les retours de commandes. Ce sera beaucoup plus lisible.

Le message d'erreur t'indique que la méthode fetch ne peut être appliquée à un booléen. C'est donc que ta requête :

$reponse = $bdd->query("SELECT * FROM UTILISATEURS");

ne retourne pas un objet, mais échoue et retourne la valeur booléenne false. D'où l’intérêt de gérer les erreurs à tous les niveaux.

Bonjour et désolé pour les balises.
Je viens de trouver la cause de mon problème. Il s'agit du fait que mysql est sensible à la casse sur le nom des tables. Sur le serveur sur lequel j'ai fait l'export de la base de données ça n'est apparemment pas le cas.

Dans le cas présent, les noms des tables sont en minuscules et les SELECT dans le code PHP sont en majuscules. J'aurais bien voulu savoir si il existe un paramètre pour que ce problème ne se produise plus à l'avenir.

En faisant quelques recherches j'ai vu qu'il existait un paramètre "lower_case_table_names" mais je ne vois pas vraiment si il sera utile dans mon cas.

Encore merci pour votre réactivité.

Dernière modification par nico_be83 (Le 20/03/2018, à 12:40)

Hors ligne