2016-05-03 9 views
-3

Ich arbeite mit PHP5 + und MySQL.Warum funktioniert meine "wo Bedingung" mit numerischen nicht?

ich kann nicht herausfinden, warum meine Operation nicht funktioniert:

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date'); 
$prepare->execute(array(':specific_date' => $date)); 

Mit einem fetchAll, das gibt mir alle Einträge mit „Beschriftung“ in cm_name. Auf der anderen Seite:

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > '.$date.' '); 
$prepare->execute(); 

Perfekt gibt Einträge mit „Beschriftung“ in cm_name und mit einem „cm_values“ überlegen $ date ...

ich kann nicht herausfinden, was ich tue, falsch ?

Thx für Ihre Hilfe, und verzeiht mein Englisch ...

Edit: Ich bin mit Zeitstempel Daten zu speichern, so $ date ist numerisch.

Nochmals bearbeiten: wie in Kommentaren gesagt, gibt es ein Problem mit dem Format meines param. So etwas wie

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date'); 
$prepare->bindParam(':specific_date', $date, PDO::PARAM_INT); 
$prepare->execute(); 

Werke ... Also muss ich jetzt bekommen, wie es in der Durchführung von Arbeiten zu machen() ...

+0

Ich denke, im zweiten Beispiel vergleichen Sie 'Strings' statt' Dates'. 'c_metas' ist wahrscheinlich EAV-Tabelle mit' cm_values'-Spalte als Text. Versuchen Sie: 'WHERE CAST (cm.cm_name AS DATE)>' – lad2025

+0

Ich benutze tatsächlich timestamp (oldschool, ich weiß) so specific_date, $ date sind Zahlen. – Vae

Antwort

0

,

$prepare = $bbd->prepare('SELECT cm.cm_values FROM c_metas as cm WHERE cm.cm_name = "inscription" AND cm.cm_values > :specific_date'); 
$prepare->bindValue(':specific_date', $date, PDO::PARAM_INT); 
$prepare->execute(); 

fixiert die ganze Sache. Thx für Ihre Antworten Jungs.

0

:specific_date“ ist eine Zeichenfolge, und Sie wollen eine Variable $date anrufen . Sie sind verschiedene Sachen, so dass sie zu unterschiedlichen Ergebnissen führen. Eigentlich

+0

Ich verstehe es nicht. : specific_date soll sich über execute() auf $ date beziehen, oder? (BTW, ich benutze Timestamp so meine Daten sind Zahlen) – Vae