2012-02-02 5 views
-1

Bon, donc je suis toujours en train de faire des déclarations préparées et chaque fois que je pense, oui je l'ai, une nouvelle requête arrive et je pense Hmmmm je voudrais mettre cela en place?comment faire pour modifier cette requête dans une instruction préparée?

Alors voilà, j'ai une requête qui extrait les enregistrements d'une base de données en fonction d'une date et les commande selon cette date. Les dossiers qu'il trouve sont basés sur une année et de la valeur mois et la requête ressemble à ceci:

$getresults = mysql_query(" SELECT * FROM `results` WHERE `date` LIKE '2012-$monthid%' ORDER BY date "); 

J'ai déjà déclaration préparée de base pour obtenir un utilisateurs enregistrement de ma base de données:

$query = "SELECT * 
      FROM results 
      WHERE date = ? 
      LIMIT 1"; 

    if($stmt = $this->conn->prepare($query)) 
    { 
     $stmt->bind_param('s', $date); 
     $stmt->execute(); 

     if($stmt->fetch()) 
     { 
      $stmt->close(); 
      return true; 
     } 
     else 
      return false; 
    } 

Comment se je change cela pour le rendre plus comme la première requête?

Merci pour l'aide.

Répondre

2

Une idée serait de filtrer par année et par mois dans des parties séparées de la clause WHERE:

$query = "SELECT * FROM results WHERE YEAR(date) = 2012 AND MONTH(date) = ? ORDER BY date"; 

if ($stmt = $this->conn->prepare($query)) { 
    $stmt->bind_param('i', $monthid); 
    ... 
} 
+1

+1 - en utilisant 'LIKE' sur un champ de date _wrong_ se sent juste! – Alnitak

Questions connexes