Autor | Zpráva | ||
---|---|---|---|
Ejdm7 Profil * |
#1 · Zasláno: 30. 6. 2015, 20:53:52 · Upravil/a: Ejdm7
Ahoj,
ač jsem hledal různě na internetu, tak se mi nepodařilo přijít na to, proč nefunguje tenhle dotaz. $obsah = mysql_query("SELECT videa.*, blogeri.id, blogeri.jmeno FROM `videa` inner join `blogeri` on videa.bloger = blogeri.id_blogera WHERE `videa.id` = ".$_GET['id']."") or die ("Nepovedlo se."); Vypíše Nepovedlo se.. Ještě nemám jasno v tom, jak data z tohoto dotazu vypsat. Zda stačí vypsat $vypis['titulek'] nebo je potřeba zapsat $vypis['videa.titulek'] při použití while.UPDATE: 1) Našel jsem si chybu, že mám ve výpisu tabulek místo blogeri.id_blogera blogeri.id, ale ani po opravení to nefunguje. 2) Použití or die (mysql_error($obsah)) nevypíše nic.
|
||
Radek9 Profil |
Ejdm7:
Nemělo by tam místo blogeri.id_blogera být jen blogeri.id ? Jinak mě nic nenapadá, syntakticky je to správně. Doporučuju ještě ošetřit ten vstup z $_GET u, mělo by to stačit jen přetypovat na číslo.
„Zda stačí vypsat $vypis['titulek'] nebo je potřeba zapsat $vypis['videa.titulek'] “
První možnost. Takže bacha, kdybys vybíral dva sloupce se stejným názvem. Edit: Aha, jsem slepý. juriad kápl na chybu. :-) |
||
juriad Profil |
#3 · Zasláno: 30. 6. 2015, 21:02:52
Ejdm7:
Místo výpisu „Nepovedo se“ si raději vypiš skutečnou chybu pomocí mysql_error. Nepoužíváš správně zpětné apostrofy - pokud jim nerozumíš, raději je nepoužívej. Problém je v posledním použití. Databáze očekává sloupec pojmenovaný přesně (s tečkou v názvu) videa.id - takový tam není, je tam jen sloupec id v tabulce videa, tedy správně je buď videa.id nebo, chceš-li použít zpětné apostrofy, `videa`.`id` .
Ve výsledku se původní názvy tabulek a aliasy ztratí. Budeš tedy k přistupovat jen pomocí $vypis['titulek'] .
|
||
Ejdm7 Profil * |
#4 · Zasláno: 30. 6. 2015, 21:10:16
Radek9, juriad:
Díky za rady. Rozběhlo se to, ale výpis stránky je pomalejší. Je to normální nebo může být problém ještě někde jinde? |
||
juriad Profil |
#5 · Zasláno: 30. 6. 2015, 21:21:27
Ejdm7:
Ano, může být problém i jinde. Kolik dotazů do databáze provádíš? Počítej každý tolikrát, kolikrát se spustí. Nebo ukaž relavantní část kódu. Zkusil jsi měřit výkon skriptu pomocí funkce microtime (viz 2. example)? |
||
Ejdm7 Profil * |
#6 · Zasláno: 1. 7. 2015, 15:48:24
juriad:
microtime ukazuje 0.00015783309936523 sekund. Nemá tušení co to znamená. Vidím to spíš na to, že delší dobu načítání způsobuje obsah stránky (embed video). Dotaz provádím jeden a spustí se dvakrát (jestli to dobře chápu, tak spuštění odkazu=vybrání řádku databáze). |
||
Časová prodleva: 10 let
|
0