Problème SQL Dialect

Par Flo Rian, il y a 10 ans


Bonjour à tous,
Je suis actuellement la vidéo Gestion d'un espace membre ,"https://www.grafikart.fr/tutoriels/php/gestion-membre-229", et je recontre un problème aux alentours de la minute 28.

J'ai un formulaire html et je veux donc envoyer mes données collectées dans ma database mySQL. Je code sous linux avec PHPStorm.
Quand j envoie mon formulaire j obtiens

Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[3D000]: Invalid catalog name: 1046 No database selected' in /home/florian/www/cup/creation.php:21 Stack trace: #0 /home/florian/www/cup/creation.php(21): PDOStatement->execute(Array) #1 {main} thrown in /home/florian/www/cup/creation.php on line 21

Voici mon code :

18 if (empty($errors)){ 19 require_once '_inc/db.php'; 20 $req = $pdo->prepare('INSERT INTO cups SET nomClan = ?, pseudo = ?, email = ?, nombreMax = ?'); 21 $req->execute([$_POST['nomClan'],$_POST['pseudo'],$_POST['email'],$_POST['nombreMax']]); 22 die("Le tournoi à bien été crée"); 23 }

De plus à la ligne 21, PHPStorm me surligne le "prepare();" et me dit "SQL dialect is not configured", or je ne comprend pas puisque dans l onglet database j ai bien "MySQL - site@localhost (site) : connected". 'site' étant le nom de ma db.

Ceci étant ma première expérience avec une base de donnée, toute piste est la bienvenue !

7 réponses

Flo Rian, il y a 10 ans

Malheuresement mon dossier se nomme bien _inc donc le lien dans require_once '_inc/db.php'; n'est pas erroné.

Lartak, il y a 10 ans

Bonjour.
Ce n'est pas parce que tu es connecté à ta base de données dans l'onglet Database sur PHPStorm, que tu n'as pas d'erreur dans ton code PHP.
Dans les sources du tutoriel, le dossier se nomme inc et non _inc, donc, à moins que tu aies toi même modifié le nom du dossier pour qu'il se nomme _inc, sinon ce n'est pas étonnant que la connexion ne se fait pas avec ta base de données en PHP.

nico41, il y a 10 ans

"SQL dialect is not configured" : PhpStorm t'invite à lui confirmer que tu utilise le langage SQL dans tes scripts pour qu'il active l'autocomplétion pour ce langage ainsi que la coloration syntaxique. Il me semble que si tu survole (click sur) le code incréminé, tu veras l'infobulle avec la petite ampoule, => dans ce menu contextuel tu pourras le faire.
Peux tu montrer le code de ton _inc/db.php, peut être qu'une erreur s'y est glissée, car apparemment la connexion à la base ne fonctionne pas depuis ton script "No database selected"

Romain Chevallier, il y a 10 ans

bonjour, fournis nous le contenue de ton fichier db qu'on puisse te dire ou est l'erreur cache le mdp si ca te fait peur

Merci

Flo Rian, il y a 10 ans

Effectivement je cherchais l erreur au mauvaise endroit. Merci à tous pour l aide.

Flo Rian, il y a 10 ans

Bonjour,
Voici mon dossier db.php

<?php $pdo = new PDO('mysql:site;host=localhost' , 'root' , '****'); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $pdo->setAttribute(PDO::FETCH_OBJ, PDO::ATTR_DEFAULT_FETCH_MODE);

Je rappelle que ma base de donnée s appelle 'site' et ma table 'cups'.

Lartak, il y a 10 ans

C'est normal, ce n'est pas mysql:site; mais mysql:dbname=site;.