Zum Inhalt springen

where_clause Problem...

Erstellt am 9. Februar 2007 · 7 Antworten · letzte Antwort am 12. Februar 2007

Tags: Frage

Ande ·

Hallo

Ich hab schon in der DBAL Documentation
http://typo3.org/documentation/document-library/core-documentation/doc_core_cgl/current/view/1/4/
in der Wiki
http://wiki.typo3.org/index.php/Extension_Developers_Guide
und in einem MySQL Tutorial gesucht
http://ffm.junetz.de/members/reeg/DSP/node10.html#SECTION04260000000000000000
konnte aber nichts brauchbares finden.

In einer extension habe ich ein paar für mich wiedersprüliche Werte in der where_clause gefunden.
BSP1

$whereClause = 
" AND ".$this->cat_table . ".uid='".$this->getUid()."'".
" AND ".$this->album_table.".deleted=0".              " AND ".$this->album_table.".hidden=0";

BSP2

$where_clause = " pid IN (".$this->conf['pid_list'].") AND deleted='0'         AND l18n_parent='0'";

Wozu sind in den beiden wheres die unmengen an Punkten gut? Das können doch nicht alles Operatoren sein.
Würde beim ersten Beispiel nicht auch folgendes reichen.

$where_clause = "$this->cat_table . uid='$this->getUid()'"
AND "$this->album_table .deleted=0".                AND "$this->album_table .hidden=0";

Wozu das ganze?
Dann ist mir noch aufgefallen das im Vergleich zum ersten, dass zweite Beispiel ohne so viele Punkte auskommt. Dafür werden bei

deleted='0'

die ' ingefügt wo beim ersten Beispiel folgendes ausreicht

deleted=0

Weiss jetzt wirklich nicht woran ich mich halten soll und wozu die ganzen Punkte... #paralyzed#

Vielleicht kann mich ja jemand aufklären.
M.f.G. Ande

jenses ·

Die Anweisungen, die du in der Extension gefunden hast, sind absolut korrekt.
Über den Sinn von einfachen Anführungsstrichen bei Integerwerten kann man sich streiten, ansonsten gibt´s nichts daran auszusetzen.

Ande ·

Ja gut, aber was ist mit den Punkten warum vor und nach jedem Wert welche?
Und warum sind im ersten Beispiel welche vor deleted und im zweiten nicht, was bringen die?

jenses ·

Am Besten, du besorgst dir mal ein bißchen Einführungsliteratur für PHP und MySQL 😉
(Im ersten Beispiel werden die Felder zweier db.Tabellen abgefragt. Um exakt zu "adressieren" kombinert man dabei Tabellenname und Feldname:
"WHERE tabelle1.feld1=345 AND tabelle2.feld2='nixda'" )

Ande ·

Die hab ich ja, z.B einer meiner Links oben ist ein ganz nettes MySQL Tutorial, da sieht das aber alles ein wenig anders aus.

(Im ersten Beispiel werden die Felder zweier db.Tabellen abgefragt. Um exakt zu "adressieren" kombinert man dabei Tabellenname und Feldname:
"WHERE tabelle1.feld1=345 AND tabelle2.feld2='nixda'" )

Das ist mir ja auch klar aber da steht es ja nicht so

"WHERE tabelle1.feld1=345 AND tabelle2.feld2='nixda'"

sondern so

WHERE " AND".tabelle1 . ".feld1='".123."'". " AND ".tabelle2 .".feld2=nixda"

Mit den Anführungsstrichen krieg ich ja noch beisammen, aber warum jetzt vor und nach Feld1 sowie in dem Wert von Feld1 Punkte stehen kann ich mir nicht erklären. Konnte dazu auch nichts finden. Ich möchts ja nur verstehen 😢

just2b ·

IMO hat der Ersteller eben diese php/mysql-Bücher nicht und hat sich eben was zusammengebaut, das einfach funktioniert, unabhängig davon ob es einen besseren Weg gibt

georg

steffenk ·

sowohl die " als auch die Punkte sind vollkommender Blödsinn. Richtig ist das im php-Syntax, wenn man den String aus Text und Variablen zusammensetzt.