Se connecter sql
Résoluj'ai mis
<?php
try
{
$pdo = new PDO('mysql:host=legtux.org;dbname=sitenom', 'mdp', 'sitenom');
}
catch(Exception $e)
{
echo 'Echec de la connexion à la base de données';
exit();
}?>
et il m'affiche
Echec de la connexion à la base de données';
coment pon peut faire pour se connecter à la base sql
7 réponses
La discussion porte sur une erreur de connexion à une base de données MySQL via PDO, affichant Echec de la connexion à la base de données et posant la question du code pour se connecter. Plusieurs contributions insistent sur l'activation du mode d'erreur PDO (ERRMODE_EXCEPTION), l'usage de try/catch, et la vérification du DSN, du nom d'hôte, du nom de base et des identifiants. D'autres rappellent qu'il n'existe pas de code universel et que les pratiques évoluent avec PHP; l'encodage UTF-8 et les requêtes préparées avec fetch doivent être utilisées correctement. Pour finir, l'un des messages signale une Notice liée à une variable non définie lors de l'affichage des résultats, soulignant l'importance de vérifier les résultats de fetch.
-
ModérateurBonjour,
Applique ceci :
https://forums.commentcamarche.net/forum/affich-37584941-php-pdo-gerer-les-erreurs
.
-
ModérateurÇa n'a pas marché... c'est à dire ???
Tu as un message d'erreur ? Lequel ?
Montre nous ton code modifié...et COMPLET.
Et puid... indique nous si ton Script Est sur un serveur web ou tu es en local sur ton ordi ?
-
-
-
si tu veux je met ca
<?php try{ $bdd =new PDO('mysql:host=legtux.org; dbname=site; charset=utf8', 'site', 'mdp'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); }?>
il me dit :
Erreur : SQLSTATE[HY000] [2002] Connection refused -
Modérateur@justineTon script PHP se trouve sur le serveur qui héberge ta bdd ?
Tu es sûr de tes identifiants ?
car le message laisse présager que tu n'as pas les droits d'accès à la base avec les identifiants que tu as renseigné -
-
-
Modérateurça vient de la base ..... donc... il te manque la partie où tu fais la requête SELECT pour récupérer ces données....
-
j'ai mis tout ce code
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" > <head> <title>Liste des news</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" /> <style type="text/css"> h2, th, td { text-align:center; } table { border-collapse:collapse; border:2px solid black; margin:auto; } th, td { border:1px solid black; } </style> </head> <body> <h2><a href="rediger_news.php">Ajouter une news</a></h2> <?php try{ $bdd =new PDO('mysql:host=localhost; dbname=site; charset=utf8', 'site', 'mdp'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } //----------------------------------------------------- // Vérification 1 : est-ce qu'on veut poster une news ? //----------------------------------------------------- if (isset($_POST['titre']) AND isset($_POST['contenu'])) { $titre = addslashes($_POST['titre']); $contenu = addslashes($_POST['contenu']); // On vérifie si c'est une modification de news ou non. if ($_POST['id_news'] == 0) { // Ce n'est pas une modification, on crée une nouvelle entrée dans la table. mysql_query("INSERT INTO news VALUES('', '" . $titre . "', '" . $contenu . "', '" . time() . "')"); } else { // On protège la variable "id_news" pour éviter une faille SQL. $_POST['id_news'] = addslashes($_POST['id_news']); // C'est une modification, on met juste à jour le titre et le contenu. mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "' WHERE id='" . $_POST['id_news'] . "'"); } } //-------------------------------------------------------- // Vérification 2 : est-ce qu'on veut supprimer une news ? //-------------------------------------------------------- if (isset($_GET['supprimer_news'])) // Si l'on demande de supprimer une news. { // Alors on supprime la news correspondante. // On protège la variable « id_news » pour éviter une faille SQL. $_GET['supprimer_news'] = addslashes($_GET['supprimer_news']); mysql_query('DELETE FROM news WHERE id=\'' . $_GET['supprimer_news'] . '\''); } ?> <table><tr> <th>Modifier</th> <th>Supprimer</th> <th>Titre</th> <th>Date</th> </tr> <?php $retour = mysql_query('SELECT * FROM news ORDER BY id DESC'); while ($donnees = mysql_fetch_array($retour)) // On fait une boucle pour lister les news. { ?> <tr> <td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td> <td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td> <td><?php echo stripslashes($donnees['titre']); ?></td> <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td> </tr> <?php } // Fin de la boucle qui liste les news. ?> </table> </body> </html>
il me dit
Fatal error: Uncaught Error: Call to undefined function mysql_query() in /var/www/legtux.org/users/site/www/V1/news/index.php:81 Stack trace: #0 {main} thrown in /var/www/legtux.org/users/site/www/V1/news/index.php on line 81 -
Hello,
Je pense que tu suis "bêtement" plusieurs tutos sans trop savoir ce que tu fais...
mysql_query (obsolète) et PDO ne vont pas ensemble.
Essaie plutôt :
$stmt = $bdd->prepare("SELECT * FROM news ORDER BY id DESC"); if ($stmt->execute()) { while ($donnees = $stmt->fetchAll(PDO::FETCH_ASSOC)) { // affichage ici } }
OU$stmt = $dbh->prepare("SELECT * FROM news ORDER BY id DESC"); $stmt ->execute(); $result = $stmt ->fetchAll(PDO::FETCH_ASSOC); // print_r($result); // ici un foreach ou un while
A adapter pour ton cas
D'autres exemples ici :
https://www.php.net/manual/fr/pdo.prepared-statements.php-
merci j'arrete car c'est trop dur pour moi je laisse pour ceux qui on un cerveau inteligent je laisse pour des mecs car c'est pas pour les femes
<?php try{ $bdd =new PDO('mysql:host=localhost; dbname=site; charset=utf8', 'site', 'mdp'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } $stmt = $bdd->prepare("SELECT * FROM news ORDER BY id DESC"); if ($stmt->execute()) { while ($donnees = $stmt->fetchAll(PDO::FETCH_ASSOC)) { echo stripslashes($donnees['titre']); } } ?> -
Hello :)
Il faut persévérer !
Une erreur de ma part, c'était fetch pour le while()...
$stmt = $bdd->prepare('SELECT * FROM news ORDER BY id DESC'); if ($stmt->execute()) { while ($donnees = $stmt->fetch(PDO::FETCH_ASSOC)) { echo $donnees['titre']; } }
OU
$stmt = $bdd->prepare('SELECT * FROM news ORDER BY id DESC'); $stmt ->execute(); $donnees = $stmt ->fetchAll(PDO::FETCH_ASSOC); foreach ($donnees as $key => $value) { echo $value['titre']; }
OU
$stmt = $bdd->prepare('SELECT * FROM news ORDER BY id DESC'); $stmt ->execute(); $donnees = $stmt ->fetchAll(PDO::FETCH_OBJ); foreach ($donnees as $key => $value) { echo $value->titre; }
Les 3 fonctionnent parfaitement. -
Meerci, ca fonction,ne
mais qu'es ce qui est mieu de mettre le 1 er code ou 2 ème code ou le 3 ème code
je penses qu'il y a un code mieux que les autres ;)
sinon qui décide de change le code car mon code marchait en 2011
sil faut que je change le code pour rentrer a la base donnée tout les 5 ans
il faut qu'on nous previent par mail ;) -
Il n'y a pas de codes mieux que les autres, juste de bonnes pratiques.
Personnellement, j'utilise le 3 pour garder le concept "objet" dans mon code.
Personne ne change ton code, mais les langages évoluent. Il est normal que tes requêtes fonctionnaient en 2011 mais plus aujourd'hui, les versions de PHP changent et les anciennes ne sont plus supportées.
https://fr.wikipedia.org/wiki/PHP -
-
-
je met le code si quelqu'un veux ;)
<?php try{ $bdd =new PDO('mysql:host=localhost; dbname=site; charset=utf8', 'site', 'mdp'); // Activation des erreurs PDO $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC); } catch(PDOException $e) { die('Erreur : ' . $e->getMessage()); } // la requette pour recuperer les infos à la base sql // ASC pour afficher dans l'ordre croissant. // DESC pour l'afficher dans l'ordre decroissant $stmt = $bdd->prepare('SELECT * FROM news ORDER BY id ASC'); // ensuite on vas afficher les infos de la news if ($stmt->execute()) { while ($donnees = $stmt->fetch(PDO::FETCH_ASSOC)) { // on affiche le titre echo $donnees['titre']; // on affiche le contenu echo $donnees['contenu']; // on affiche le pseudo echo $donnees['pseudo']; // on affich la date sous forme 01/01/2019 $date = DateTime::createFromFormat('Y-m-d H:i:s', $donnees['date']); echo $date->format('d/m/Y'); echo'<br />'; } }?> -
Super !