Autor Zpráva
Manny
Profil
Po aktualizaci mi začala vyskakovat hláška:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /data/web/virtuals/47926/virtual/www/index.php on line 19

Zjistil jsem neprovedený dotaz do db. Nechápu ale proč. Tuto konstrukci jsem nemněnil a do této doby fungovala. Navíc ostatní dotazy do db na webu fungují, i když používají stejný postup.
Rfilip
Profil
A dotaz do db vypadá jak?
Joker
Profil
Manny:
Viz Nejčastější potíže s PHP (FAQ).

Ten warning by v první řadě vůbec neměl nastat, pro SELECT dotaz může mysqli_query vrátit resource nebo false (hádám, že tady je příčina problému), takže skript by měl nějak reagovat na situaci, kdy vrátí false.

Jinak stejný SQL dotaz provedený přímo nad databází (třeba v phpMyAdminu) funguje?
Lkopo
Profil *
100% je chyba v predchádzajúcom SQL dotaze, resp. dotaz, z kt. sa snažíte získať počet riadkov, lenže ten dotaz hodil nejaký error, ktorý ste si nedali nikde vypísať. Keď nechcete ho vypísať na stránku, tak do nejakého súboru, napr. mysql-errors.log
Manny
Profil
do db jde úplně obyčejný select
$sql_dotaz = "SELECT id, parametr, title, keyword, description, content, type, gallery, autotitle, pull_down_intersec
                FROM obsah
                WHERE parametr = '".$str."'";
            
        $db_dotaz = mysqli_query($spojeni,$sql_dotaz);
Proměnnou $str jsem ověřil.
Na localu funguje, na ostrém serveru nikoliv.


Záhada vyřešena! Jsem úplnej d***:-)
Přidával jsem do tabulky nový sloupec. Takže dotaz byl i na sloupec, který neexistoval.
Omlouvám se za ztracený čas.
Joker
Profil
Manny:
Přidával jsem do tabulky nový sloupec. Takže dotaz byl i na sloupec, který neexistoval.

Přesně něco takového jsem čekal.
Právě proto se vždycky vyplatí si zjistit složený SQL dotaz a jakkoliv na pohled vypadá, že to prostě musí fungovat, zkusit ho přímo nad danou databází*. Prakticky vždycky se pak ukáže, že byla přece jen chyba v SQL dotazu.

* Pro SELECT dotaz v jednoduchých podmínkách to stačí, při nějakém vyšším standardu programování se pochopitelně podívat do logu a experimenty dělat nad kopií ostré databáze.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: