Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Blad skladniowy SQL
Forum PHP.pl > Forum > Bazy danych
q.michal
Czesc,

Nie jestem orlem jezeli chodzi o SQL i nie potrafie rozwizac bledu skladniowego...
Wymodzilem takiego SQLa:

  1. $stmt = $db->prepare('IF EXISTS(SELECT id FROM records WHERE name = ? AND disabled = ? AND type = ? LIMIT 1)' .
  2. '(UPDATE records SET content = ? WHERE name = ? AND disabled = ? AND type = ? LIMIT 1)' .
  3. '(INSERT INTO records(id, domain_id, name, type, content, ttl, prio, change_date, disabled) VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?))');



I dostaje blad 42000 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '(UPDATE records SET content = 'XXXXXXXX' WHER' at line 1

Czy ktos jest w stanie wytlumaczyc mi gdzie tu jest blad?
trueblue
Zobacz czy zapytania nie możesz zastąpić: https://www.google.com/search?q=mysql+inser...uplicate+update
q.michal
Nie moge bo unikalnym kuczem jest ID wpisu. A ja musze dodac albo zaktualizowac wpis, w zaleznosci od tego nazwy i typu rekordu.
Jest to zwykly DNS z backendem w MySQLu
trueblue
ON DUPLICATE dotyczy również kluczy unikalnych, a jeśli nie: https://stackoverflow.com/a/12639536
q.michal
W DNSie nie ma unikalnych wpisow... mozesz zrobic load-balancing (RoundRobin) dodajac wiele takich samych wpisow o roznym kontencie.

Po zmianie dostaje teraz taki blad:


You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'ELSE INSERT INTO records(id, domain_id, name, type, content, ttl, prio, change_d' at line 1
nospor
Cytat
Po zmianie dostaje teraz taki blad:
Jesli zmieniasz kod i masz inny blad to domysl sie, ze nalezy pokazac caly zmieniony kod. My nie wrozki, nie wiemy na co zmieniles...
q.michal
Zmienilem tak jak w linku zapodanym przez trueblue.
Tak czy inaczej juz wiem gdzie jest problem.

IF EXISTS dziala tylko w funkcjach i procedurach
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2024 Invision Power Services, Inc.