Petite requête mysql

Gustave -  
 Gustave -
Bonsoir à tous,


J'aimerais faire une requête mysql pour afficher les données d'un id précis défini dans l'url de la page. (C'est bien dans l'optique d'ajouter des commentaires à des news sur un blog)

Le code utilisant PDO marche:
--------------------------------------------------------------------------------------
<?php
try
{
$pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
$bdd = new PDO('mysql:host=localhost;dbname=test', 'root', '', $pdo_options);

$req = $bdd->prepare('SELECT id, pseudo, DATE_FORMAT(heure, \' à %Hh%i\') AS heures, message, DATE_FORMAT(dates, \'le %d/%m/%Y\') AS dates_fr FROM blog WHERE id = ?');
$req->execute(array($_GET['blog']));
$donnees = $req->fetch();
?>
<div class="poste">
<?php echo $donnees['pseudo'].' a publié : '.$donnees['dates_fr'].$donnees['heures'].'<br/>'. nl2br(htmlspecialchars($donnees['message'])).'<br/><br/>';?> </div>
<?php
$req->closeCursor();
}
catch(Exception $e)
{
die('Erreur : '.$e->getMessage());
}
?>
--------------------------------------------------------------------------------------
Mais je souhaiterais obtenir l'équivalent avec mysql :
--------------------------------------------------------------------------------------
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('test');

$query = mysql_query("SELECT id, pseudo, DATE_FORMAT(heure, \' à %Hh%i\') AS heures, message, DATE_FORMAT(dates, \'le %d/%m/%Y\') AS dates_fr FROM blog WHERE id = '$_GET[blog]'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$donnees = mysql_fetch_array($query);
?>
<div class="poste">
<?php echo $donnees['pseudo'].'publié:'.$donnees['dates_fr'].$donnees['heures'].'<br/>'. nl2br(htmlspecialchars($donnees['message'])).'<br/><br/>';?></div>
<?php
mysql_close();
?>
--------------------------------------------------------------------------------------
Mais ça ne fonctionne pas. (Erreur SQL ! You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\' à %Hh%i\') AS heures, message, DATE_FORMAT(dates, \'le %d/%m/%Y\') AS dates_f' at line 1)

Je vous remercie d'avance.
Bonne soirée. :)
A voir également:

13 réponses

rodoplop Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   12
 
Bonsoir

puisque ta requête est un select, est ce que si tu réalise une requête comme

$query = mysql_query("SELECT id, pseudo,heures, message,dates, FROM blog WHERE id = '$_GET[blog]'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error()); 


Juste pour voir si sa fonctionne (si les colonnes se nomment bien heure et date)
0
Gustave
 
Ah merci !
Mais j'ai une autre erreur de syntaxe. :/
Erreur SQL !
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM blog WHERE id = '39'' at line 1

La valeur de $_GET semble bien être enregistrée puisque le message d'erreur affiche id = 39. Sinon je ne vois pas vraiment d'où vient l'erreur ...
0
rodoplop Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   12
 
ton id doit être in entier (int), il ne faut pas de guillemet autour de ta valeur $_GET[blog]

donc le

WHERE id = '$_GET[blog]'

devient

WHERE id = $_GET[blog]
0
Gustave
 
J'ai écrit ça :
$query = mysql_query("SELECT id, pseudo,heures, message,dates, FROM blog WHERE id = $_GET[blog]") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());

Mais cela ne marche toujours pas
Erreur SQL !
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM blog WHERE id =39' at line 1
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
rodoplop Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   12
 
si tu parse ta requete en deux instructions

$query = "SELECT id, pseudo,heures, message,dates, FROM blog WHERE id = $_GET[blog]";

echo $query;

peut tu me dire si la requete est bien affiché ?
0
Gustave
 
oui elle est affichée
0
rodoplop Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   12
 
ton champ ID dans ta table est bien de type integer ou int ?
0
Gustave
 
int(11)
0
rodoplop Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   12
 
A tu accès a un phpmyadmin ?

Si oui, lorsque tu va dans la partie "SQL" pour taper des requete et que tu essaye cette requête

SELECT id, pseudo,heures, message,dates, FROM blog

et

SELECT id, pseudo,heures, message,dates, FROM blog WHERE id = 39

ou

SELECT id, pseudo,heures, message,dates, FROM blog WHERE id = '39'

est ce que l'une d'elle fonctionne ?

sa me parait bizarre car la requête à l'air d'être correcte.
0
Gustave
 
avec la requête de phpmyadmin j'ai erreur de syntaxe.
0
Gustave
 
SELECT message, date, heure FROM 'blog' WHERE 39

quand j'écris ça c'est bon
0
rodoplop Messages postés 77 Date d'inscription   Statut Membre Dernière intervention   12
 
Juste pour être sur, tu n'aurais pas des apostrophe qui traîne dans ta requête ?

Si un (SELECT * FROM blog WHERE id=39) fonctionne, il n'y a pas de raison que celle-ci ne fonctionne pas dans ton code.
0
Luxerails Messages postés 159 Date d'inscription   Statut Membre Dernière intervention   41
 
Y'a une virgule en trop dans
pseudo,heures, message,dates,
à la fin.
Ca devrait etre
pseudo,heures, message,dates
0
Gustave
 
Finalement ça marche en écrivant :

$query = mysql_query("SELECT id, pseudo, DATE_FORMAT(heure, ' à %Hh%i') AS heures, message, DATE_FORMAT(dates, 'le %d/%m/%Y') AS dates_fr FROM blog WHERE id ='{$_GET['blog']}'")

d'où le code en entier :
<?php
mysql_connect('localhost', 'root', '');
mysql_select_db('test');
$query = mysql_query("SELECT id, pseudo, DATE_FORMAT(heure, ' à %Hh%i') AS heures, message, DATE_FORMAT(dates, 'le %d/%m/%Y') AS dates_fr FROM blog WHERE id ='{$_GET['blog']}'") or die('Erreur SQL !'.$sql.'<br>'.mysql_error());
$donnees = mysql_fetch_array($query);
?>
<div class="poste">
<?php echo $donnees['pseudo'].' a publié : '.$donnees['dates_fr'].$donnees['heures'].'<br/>'. nl2br(htmlspecialchars($donnees['message'])).'<br/><br/>';?>
</div>
<?php
mysql_close();
?>

Je vous remercie beaucoup pour votre aide !
0