[RESOLU] connexion base donnée

Eléphanteau du PHP | 14 Messages

26 oct. 2016, 14:48

Bonjour
C'est mon premier essai pour me connecter à une base de donnée (Prestashop) et y lire des éléments. Mais je bloque à l'envoie de la requete : l'étape 3 s'affiche bien mais pas le 4 !
Auriez vous une idée pour débloquer, car j'ai tout vérifié plusieurs fois sans comprendre?
Merci

Code : Tout sélectionner

<?php echo 'etape 1';echo '<br>'; // ACCES BASE $host = "XXXprestashop.mysql.db"; $bdd = "XXXprestashop"; $user = "XXXprestashop"; $passwd = "xxx"; // Connexion au serveur echo 'etape 1a';echo '<br>'; $conn = mysqli_connect('$host', '$user', '$passwd', 'bdd'); echo 'etape 2';echo '<br>'; $req = "SELECT numero FROM p_vente"; // On créé la requête echo 'etape 3';echo '<br>'; $res = $conn->query($req); // on envoie la requête echo 'etape 4';echo '<br>'; while ($data = mysqli_fetch_array($res)) {echo $data['numero'];} // on va scanner tous les tuples un par un mysqli_close($conn); // Deconnexion de la base de donnees ?>

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 8758 Messages

26 oct. 2016, 15:27

salut,

quand tu indiques que l'étape 4 ne s'affiche pas c'est que tu ne le vois pas dans la page ?

c'est tout a fait logique vu que ne pense pas que la connexion se fasse vu ce que tu passes comme parmètre.

du coup $conn === false et tu as une erreur sur $conn->query parce qu'il n'y a pas de méthode query sur un booleen.

il faut toujours tester le retour de mysqli_connect pour être certain que la connexion soit effective.
exemple dans la documentation de mysqli_connect (partie procédural) http://php.net/manual/fr/mysqli.construct.php

l'origine de ton problème c'est que tu utilises des vairables dans des chaînes de caractères délimitées par des simple quote ( ' )
or dans ce cas les variables ne soit pas interprétées.
il est totalement inutile d'utiliser une chaîne de caractères pour employer une variable

Le code devient
<?php
$conn = mysqli_connect($host, $user, $passwd, $bdd);
if (!$conn) {
    die('Erreur de connexion (' . mysqli_connect_errno() . ') '. mysqli_connect_error());
}
ceci n'est qu'une exemple le die n'est pas a employer pour toutes les requêtes. Ici cela se comprend parce que sans base de données pas de site.
Même s'il est préférable d'afficher correctement la page avec un beau message d'erreur :-)


@+
Il en faut peu pour être heureux ......

Eléphanteau du PHP | 14 Messages

26 oct. 2016, 15:37

En effet, j'ai un problème de connexion "Erreur de connexion (2005) Unknown MySQL server host '$host' (1)"

que veux tu dire par "tu utilises des vairables dans des chaînes de caractères délimitées par des simple quote ( ' )" ? je suis sure de mes variables $host $bdd $user et $passwd car je les utilises correctement pour me connecter à phpmyadmin

Mammouth du PHP | 1967 Messages

26 oct. 2016, 15:54

le problème vient de ta ligne

$conn = mysqli_connect('$host', '$user', '$passwd', 'bdd');
dans cette ligne, tu utilise des simple quote ' autour de chaque variable. donc plutot que de te connecter à prestashop.xxx tu tente de te connecter à la chaine de caractère $host. il faut que tu enlève ces ' et que tu utilise une condition de vérification de ta connection comme proposé par Moogli
Spols
pour les fan de rubik's cube ou pour les curieux ==> le portail francophone du rubik's cube

Eléphanteau du PHP | 14 Messages

26 oct. 2016, 16:35

merci à vous deux
Heureusement que j'avais précisé que c'était la première fois que j'essayais de me connecter à une bdd, ça permet d'être moins ridicule, quand la solution est aussi simple ;-)