Page 1 sur 1

connexion base donnée

Posté : 26 oct. 2016, 14:48
par Sim88
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 ?>

Re: connexion base donnée

Posté : 26 oct. 2016, 15:27
par moogli
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 :-)


@+

Re: connexion base donnée

Posté : 26 oct. 2016, 15:37
par Sim88
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

Re: connexion base donnée

Posté : 26 oct. 2016, 15:54
par Spols
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

Re: connexion base donnée

Posté : 26 oct. 2016, 16:35
par Sim88
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 ;-)