Nette hlási MySQL syntax error, ten istý komand ale v databáze prejde

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Andurit
Člen | 131
+
0
-

Ahojte,
napísal som si SQL command na získaníe dát z pár tabuliek databáze, celý komand je funkčný a bezproblémov ho rozbehám po PHPMYADMINOM.

Ak však ten istý command dám do nette, dostávam chybu s vyznačením '):

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '0' at line 1

Môj model vyzerá nejako takto:

	function getAllRegistered()
	{
		return $this->db->query
		('
		SELECT c.id, c.firstname, c.surname, c.email,
		       MAX(CASE WHEN cl.languageID = 1 THEN cl.skill ELSE '-' END),
		       MAX(CASE WHEN cl.languageID = 2 THEN cl.skill ELSE '-' END)
		FROM candidates AS c
		LEFT JOIN candidates_language AS cl ON c.id = cl.candidates_id
		GROUP BY c.id, c.firstname, c.surname, c.email
		');
	}

Presenter:

	function renderDefault()
	{
		$this->template->candidates = $this->candidates->getAllRegistered();
	}

Na ukážku pripravený aj funkčný SQL Fiddle
http://sqlfiddle.com/#…

Blujacker
Člen | 89
+
+6
-

Videl bych to na problem s apostrofy uvnitr SQL dotazu. Cely dotaz je ohranicen ' a pak v samotnem SQL mas '-' cimz tim dotaz prerusis na dva. Nahradil bych vnitrni apostrofy na uvozovky ".

function getAllRegistered()
{
    return $this->db->query
    ('
    SELECT c.id, c.firstname, c.surname, c.email,
           MAX(CASE WHEN cl.languageID = 1 THEN cl.skill ELSE "-" END),
           MAX(CASE WHEN cl.languageID = 2 THEN cl.skill ELSE "-" END)
    FROM candidates AS c
    LEFT JOIN candidates_language AS cl ON c.id = cl.candidates_id
    GROUP BY c.id, c.firstname, c.surname, c.email
    ');
}
Andurit
Člen | 131
+
0
-

Som blbec, samozrejme máš pravdu :)

Unlink
Člen | 298
+
0
-

Tá 0…
V php
'aa' - 'bb' = 0

Editoval Unlink (26. 5. 2015 9:57)