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
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
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
');
}