2 Stimmen

Probleme mit drupal Datenbankabfrage

Ich versuche, mit dieser Anfrage, die in phpayadmin funktioniert, ein Ergebnis abzurufen:

 $result_med = db_query("SELECT node.nid AS nid,
   node.created AS node_created
 FROM dr_wiwe_node node 
 LEFT JOIN dr_wiwe_content_type_classified node_data_field_classified_valid_till ON node.vid = node_data_field_classified_valid_till.vid
 WHERE ((node.type in ('classified')) AND (node.status <> 0))
    AND (DATE_FORMAT(STR_TO_DATE(node_data_field_classified_valid_till.field_classified_valid_till_value, '%Y-%m-%dT%T'), '%Y-%m-%d\T%H:%i:%s') >= '2010-09-16T22:34:05')
   ORDER BY node_created DESC LIMIT 1");
    var_dump($result_med);
    while ($node = db_fetch_object($result_med)) {
    //var_dump ($node);}

In der festcodierten php-Version wird nichts zurückgegeben. Wenn ich $result_med var_dump, erhalte ich: resource(552) vom Typ (mysql result)

Wo liegt mein Fehler?

4voto

Henrik Opel Punkte 19268

Das Problem wird wahrscheinlich verursacht durch db_query() behandelt Teile Ihrer Datumsformatierungszeichenfolgen als Abfrageparameter, die es zu ersetzen versucht.

Sie müssen also zusätzliche "%"-Zeichen zu den vorhandenen Zeichen hinzufügen, um sie zu entschlüsseln und so zu verhindern, dass der Parameter-Ersetzungsprozess versucht, sie zu ersetzen.

Siehe die "Wenn eine Abfrage, die % enthält," Kommentar aus der db_query api-Dokumentation für ein Beispiel.

Eine sauberere/lesbarere Lösung könnte darin bestehen, einfach "%s"-Platzhalter für die Formatierungszeichenfolgen in der Abfrage zu verwenden und dann die tatsächlichen Formatierungszeichenfolgen als Argumente zum db_query-Aufruf hinzuzufügen, wie von Eli vorgeschlagen.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X