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. :)

13 réponses

  1. rodoplop Messages postés 77 Statut Membre 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
  2. 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
  3. rodoplop Messages postés 77 Statut Membre 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
  4. 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
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. rodoplop Messages postés 77 Statut Membre 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
  7. rodoplop Messages postés 77 Statut Membre 12
     
    ton champ ID dans ta table est bien de type integer ou int ?
    0
  8. rodoplop Messages postés 77 Statut Membre 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
  9. Gustave
     
    avec la requête de phpmyadmin j'ai erreur de syntaxe.
    0
  10. Gustave
     
    SELECT message, date, heure FROM 'blog' WHERE 39

    quand j'écris ça c'est bon
    0
    1. rodoplop Messages postés 77 Statut Membre 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
  11. Luxerails Messages postés 160 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
  12. 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