SQL-Statement von Hand

Daten auslesen, verarbeiten und den Views übergeben

SQL-Statement von Hand

Beitragvon Mozzarella am Sa 6. Feb 2010, 17:28

Hallo!

Mit query() lassen sich ja eigene Queries an die Datenbank schicken.
Ich habe mal testhalber einen eigene SQL-Abfragen von Hand formuliert und diese mit query() ausgeführt. Dabei bekomme ich stets eine Fehlermeldung, wenn ich einen String in die WHERE-Klausel einfüge.

Bsp. "SELECT * FROM `foo` WHERE id = 2" klappt.
Aber: "SELECT * FROM `foo` WHERE vorname = `Otto`" klappt nicht: Ich erhalte den Fehler "Unknown column 'Otto' in 'where clause' ...."

Kann mir da jemand weiterhelfen? :?
Mozzarella
 
Beiträge: 13
Registriert: Fr 21. Aug 2009, 17:43
CakePHP-Version: 1.2.4.8284
OS: Windows

Re: SQL-Statement von Hand

Beitragvon dth33 am Sa 6. Feb 2010, 18:31

Hi,

versuche mal folgendes:

Code: Alles auswählen

return $this->query("
            SELECT
                f.id,
                f.vorname
            FROM
                foo AS f
            WHERE
                f.vorname = 'Otto';
        "
);
 


Grüße Steffen
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Re: SQL-Statement von Hand

Beitragvon Mozzarella am So 7. Feb 2010, 12:23

Ich erhalte dieselbe Fehlermeldung.
Es muß übrigens auch
Code: Alles auswählen
return $this->ModelName->query()

heißten, weil query() eine Model-Funktion ist. ;)

Hat sonst noch jemand eine Idee. Ist das evtl. einen Problem der Datenbank?
Mozzarella
 
Beiträge: 13
Registriert: Fr 21. Aug 2009, 17:43
CakePHP-Version: 1.2.4.8284
OS: Windows

Re: SQL-Statement von Hand

Beitragvon euromark am So 7. Feb 2010, 12:32

nein
das liegt schlicht und einfach daran dass du die falschen backticks benutzt!

` benutzt man in sql für Tabellen-/Feldernamen etc
' benutzt man für die Werte
siehe mysql doku

`Model.name` = 'some value'

die fehlermeldung sagts ja bereits!


davon mal abgesehen dass du von manuellem sql lieber die finger lassen solltest solange die strings potenziell unsafe sein können
euromark
 
Beiträge: 356
Registriert: Fr 27. Jun 2008, 22:17
Wohnort: München
CakePHP-Version: 1.2.4
OS: Windows

Re: SQL-Statement von Hand

Beitragvon dth33 am So 7. Feb 2010, 19:31

Hallo

return $this->ModelName->query()
heißten, weil query() eine Model-Funktion ist.


Das halte ich persönlich anders, was nicht bedeutet, dass andere es übernehmen müssen.

Code: Alles auswählen

// Model Name
function findNames () {
return $this->query("
            SELECT
                f.id,
                f.vorname
            FROM
                foo AS f
            WHERE
                f.vorname = 'Otto';
        "
);
}

// Controller Names
function index() {
 $n = $this->Name->findNames();
 debug($n)
}
 


Das funktioniert (bei mir).
dth33
 
Beiträge: 33
Registriert: Do 22. Jan 2009, 15:38
Wohnort: Am schönen Niederrhein
CakePHP-Version: 1.3
OS: Win32

Re: SQL-Statement von Hand

Beitragvon Mozzarella am Mo 8. Feb 2010, 08:54

Die Backticks, das war der springende Punkt. Vielen Dank für den Tipp!
Mozzarella
 
Beiträge: 13
Registriert: Fr 21. Aug 2009, 17:43
CakePHP-Version: 1.2.4.8284
OS: Windows


Zurück zu Controller

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste

cron