Front-end Front-end
Probíhá výprodej HTML, JavaScript a Bootstrap. Slevy až 80 %
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Diskuze: Filtrování dat

Aktivity (1)
Avatar
jaroox
Člen
Avatar
jaroox:23. ledna 23:14

Ahoj, řeším takový problém s vybíráním dat z jedné tabulky podle dat jiné.

SQL:
CREATE TABLE table2 (
id INT NOT NULL AUTO_INCREMENT,
first BOOLEAN NOT NULL DEFAULT FALSE,
second BOOLEAN NOT NULL DEFAULT FALSE,
third BOOLEAN NOT NULL DEFAULT FALSE,
fourth BOOLEAN NOT NULL DEFAULT FALSE,
PRIMARY KEY(id)
);

CREATE TABLE table1 (
id INT NOT NULL AUTO_INCREMENT,
table2_id INT NOT NULL,
....
PRIMARY KEY (id),
CONSTRAINT table1_table2 FOREIGN KEY (table2_id) REFERENCES table2(id)
);

PHP:
$query = $this->database->table("table1");
$query->whereOr(array(
'table2.first' => $data["first"],
'table2.second' => $data["second"],
'table2.third' => $data["third"],
'table2.fourth' => $data["fourth"]
));

Problém je v tom, že mi to vrací chybu, že řádek neexistuje. Vše fungovalo, dokud jsem nereinstaloval PC - tudíž i XAMPP. Zkoušel jsem to spustit i na serveru, ale tam to funguje. Verzi MySQL mám stejnou. PHP mám 7.3 a na tom serveru je 7.0.32. Nevíte, čím to může být? :)

 
Odpovědět 23. ledna 23:14
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24. ledna 8:19

Vypis si sql dotaz na obrazovku a pouzij do phpmyadmina. (echo $query nebo, jak se to dela u tveho objektu)
Podle mne, asi nemas vytvorenou db a nebo v ni nemas data. Si ze serveru udelej export dat.

Editováno 24. ledna 8:20
 
Nahoru Odpovědět 24. ledna 8:19
Avatar
jaroox
Člen
Avatar
Odpovídá na Peter Mlich
jaroox:24. ledna 19:30

Ahoj. Tak přidávám vygenerované SQL dotazy. Zjistil jsem, že z nějakého důvodu se na serveru generuje jiné SQL (to správné).

SQL ze serveru:
SELECT table1.* FROM table1 LEFT JOIN table2 ON table1.table2_id = table2.id WHERE ((table2.first = ?) OR (table2.second = ?) OR (table2.third = ?) OR (table2.fourth = ?)) ORDER BY id DESC

SQL, které se vygeneruje na localu:
SELECT * FROM table1 WHERE ((table2.first = ?) OR (table2.second = ?) OR (table2.third = ?) OR (table2.fourth = ?)) ORDER BY id DESC

Kód PHP je stejný a obsah databáze také.

 
Nahoru Odpovědět 24. ledna 19:30
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:24. ledna 21:13

takze mas spatne php. Zkontroluj si, co to dela, treba si vypisuj podminky. Cela ta cast s LEFT JOIN ti tam chybi. Ostatni je pulka pred a pulka za tim

 
Nahoru Odpovědět 24. ledna 21:13
Avatar
jaroox
Člen
Avatar
Odpovídá na Peter Mlich
jaroox:24. ledna 21:39

PHP kód mám přesně podle dokumentace, žádnou chybu tu nevidím... nemůže tam být nějaká nekompatibilita s nejnovějším PHP?

 
Nahoru Odpovědět 24. ledna 21:39
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na jaroox
Daniel Vítek:24. ledna 22:15

Cache? Zkus smazat všechno co je ve složce temp/

Nahoru Odpovědět 24. ledna 22:15
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
jaroox
Člen
Avatar
Odpovídá na Daniel Vítek
jaroox:24. ledna 22:31

To už jsem zkoušel, stále nic. :/

 
Nahoru Odpovědět 24. ledna 22:31
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:25. ledna 7:47

Tak jeste jednou. Pokud si das zobrazit sql dotaz a ten je spatne, a vytvarel jej php kod, tak je chyba v php kodu.
Pokud jsi poskladal dotaz podle dokumentace, ok, ale v tom pripade je chyba v php kodu te knihovny, kterou pouzivas.
Protoze o tom kodu nic nevime, tak ti nemuzeme k tomu jiz vice rici.
Mozna na tohle autori mysleli a je tam nejaka funkce, ktera to resi, ale neni uvedena v prikladu.

 
Nahoru Odpovědět 25. ledna 7:47
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 8 zpráv z 8.