Page 1 of 1

[GELÖST] select hierarchy

Posted: Wed Jun 10, 2009 11:06 am
by polymedium
Servus,

möchte gerne ein udt schreiben, welches mir die "page_alias" anhand der spalte "hierarchy" ausgibt.

Leider stoße ich auf folgendes Problem:

Code: Select all

global $gCms;
$db =& $gCms->GetDb();

$hierarchy = "00001"; // funktioniert
$hierarchy = "00001.00002"; // funktioniert
$hierarchy = "00001.00002.00003";  // funktioniert nicht


$dbresult = array();

$query = "SELECT content_alias FROM " . cms_db_prefix()."content WHERE hierarchy=$hierarchy";

$dbresult = &$db->Execute($query);

if ($dbresult) $row = $dbresult->FetchRow();

echo "ausgabe:" . $row['content_alias'];
Für Anregungen vielen Dank im voraus

Oli

Re: select hierarchy

Posted: Wed Jun 10, 2009 11:34 am
by NaN
Setz mal die Variable $hierarchy in einfache Anführungszeichen.
Ohne Anführungszeichen wir der Wert der Variable als Zahl (Integer=Ganzzahl oder Float=Fließkommazahl) interpretiert.
Das mag bei 00001 und 00001.00002 noch gehen (entspräche 1 und 1.00002).

00001.00002.00003 ist durch den zweiten Punkt keine Zahl mehr und wird als String interpretiert.
Und Strings müssen bei SQL Abfragen in Anführungszeichen (damit die DB weiß, ob es sich um einen Wert, eine Tabellenspalte oder einen Befehl handelt).

Um sowas in Zukunft zu vermeiden, empfehle ich Dir eine andere Schreibweise:

Code: Select all

$query = "SELECT content_alias FROM " . cms_db_prefix()."content WHERE hierarchy=?";
$dbresult = &$db->Execute($query, array($hierarchy));
Da macht die API automatisch die Anführungszeichen um die Werte.

Re: select hierarchy

Posted: Wed Jun 10, 2009 12:09 pm
by polymedium
An die Fließkomma-Sache hatte ich auch schon gedacht, Aber in Anführungszeichen setzen dafür hat es dann wieder ned gereicht  ::)

Funktioniert. Und vielen Dank auch für den Tip mit der Schreibweise.

Beste Grüße

Oli