Petite requête mysql

Fermé
Gustave - 18 sept. 2011 à 21:18
 Gustave - 19 sept. 2011 à 13:30
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. :)

13 réponses

rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 22:41
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
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 vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 23:10
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
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 vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 23:35
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
oui elle est affichée
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 23:46
ton champ ID dans ta table est bien de type integer ou int ?
0
int(11)
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
18 sept. 2011 à 23:57
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
avec la requête de phpmyadmin j'ai erreur de syntaxe.
0
SELECT message, date, heure FROM 'blog' WHERE 39

quand j'écris ça c'est bon
0
rodoplop Messages postés 77 Date d'inscription vendredi 16 septembre 2011 Statut Membre Dernière intervention 6 juillet 2012 12
19 sept. 2011 à 11:10
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 jeudi 14 avril 2011 Statut Membre Dernière intervention 24 décembre 2012 41
19 sept. 2011 à 12:14
Y'a une virgule en trop dans
pseudo,heures, message,dates,
à la fin.
Ca devrait etre
pseudo,heures, message,dates
0
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