Portál AbcLinuxu, 10. května 2025 12:05

Dotaz: MySQL query z PHP

8.8.2010 22:00 cross
MySQL query z PHP
Přečteno: 1654×
Odpovědět | Admin
Ahojte, v PHP skripte mam toto:
mysql_query("SELECT * FROM abcd WHERE hkg='$cat' AND time<='".time() ."' ORDER BY date DESC LIMIT $a,$b");
Ked tuto poziadavku v skripte prevediem:
Unknown column 'bla' in 'where clause'
Kde bla je vlastne $cat v skripte. Ak si necham celu poziadavku vypisat cez echo a nasledne skopirujem do mysql natvrdo, tak prikaz funguje. Neviete kde mam chybu?

Dik.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

8.8.2010 22:27 chrono
Rozbalit Rozbalit vše Re: MySQL query z PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Je zvláštne, že ti píše túto chybu aj keď máš okolo tej premennej $cat apostrofy.
8.8.2010 23:50 fraxinus | skóre: 20 | blog: fraxinus
Rozbalit Rozbalit vše Re: MySQL query z PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
$s = "SELECT * FROM abcd WHERE hkg='$cat' AND time<='".time() ."' ORDER BY date DESC LIMIT $a,$b";
echo "Idem pustit: ".htmlspecialchars($s);
mysql_query($s);
Co to vypise?
9.8.2010 09:12 cross
Rozbalit Rozbalit vše Re: MySQL query z PHP
Idem pustit: SELECT * FROM abc WHERE hkg='bla' AND time<='1281338071' ORDER BY date DESC LIMIT 0,5 
Unknown column 'bla' in 'where clause'
9.8.2010 11:28 volvox | skóre: 16
Rozbalit Rozbalit vše Re: MySQL query z PHP
Evidentně je problém v těch apostrofech, proto chtěl chtěl předřečník abyste výpis zkopíroval, ne přepsal ručně(viz chybějící 'd' v názvu tabulky).

A jak už bylo zmíněno, tento způsob zápisu SQL dotazů je náchylný SQL Injection. Použijte raději rozšíření PDO a zabijete tak dvě mouchy jednou ranou. Viz třeba příklad u PDOStatement->execute
okbob avatar 9.8.2010 05:16 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: MySQL query z PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Předpokládám, že se teprve PHP učíte - tak si ještě přečtěte něco o SQL injection. Máte tam parádní díru. Možná, když si to opravíte, tak to začne fungovat.
9.8.2010 09:13 cross
Rozbalit Rozbalit vše Re: MySQL query z PHP
Mozem vediet, kde ta chyba je?
okbob avatar 9.8.2010 10:58 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: MySQL query z PHP
WHERE sloupec='$cat' ..

Tam byste měl explicitně použít funkci mysql_real_escape_string - viz např. http://php.net/manual/en/function.mysql-real-escape-string.php a dost možná máte problém s magic quotes.
Jendа avatar 9.8.2010 15:09 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: MySQL query z PHP
Nemusí tam být nutně injection, třeba si obsah proměnné cat generuje nějakým switchem uvnitř programu. Ale ano, už se mi to jednou taky „povedlo“ - nejdřív jsem to generoval switchem, ale pak jsem doimplementoval funkci, která to umožnila explicitně zadat a na ošetření už jsem zapomněl. Takže ano, je lepší ošetřovat vždy.
okbob avatar 10.8.2010 07:03 okbob | skóre: 30 | blog: systemakuv_blog | Benešov
Rozbalit Rozbalit vše Re: MySQL query z PHP
No právě :)

Stačí jedna pozapomenutá substituce a vzhledem ke komplexnosti programu máte problém. Takže je dobré se tento zápis úplně odnaučit (případně pokud možno neučit).
9.8.2010 10:07 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: MySQL query z PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Tuto chybu můžete vidět, pokud místo:
"SELECT * FROM `abcd` WHERE `hkg`='$cat' AND `time`<='" . time() ."' ORDER BY date DESC LIMIT $a,$b"
máte:
"SELECT * FROM `abcd` WHERE `hkg`=`$cat` AND `time`<='" . time() ."' ORDER BY date DESC LIMIT $a,$b"
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
9.8.2010 10:31 cross
Rozbalit Rozbalit vše Re: MySQL query z PHP
Bohuzial, ani tato rada mi nepomaha. Fakt neviem, kde moze byt chyba :( Dakujem
9.8.2010 11:11 chrono
Rozbalit Rozbalit vše Re: MySQL query z PHP
Vlož sem ako prílohu ten riadok s query a ten, v ktorom nastavuješ tú premennú, ako textový súbor (lebo podľa toho, čo píšeš to vyzerá normálne).
9.8.2010 12:55 Šangala | skóre: 56 | blog: Dutá Vrba - Wally
Rozbalit Rozbalit vše Re: MySQL query z PHP
Dejte sem kus toho kódu, ale opravdu zkopírovaný a ne přepsaný - klidně jako přílohu.
To, že trpíš stihomamem, ještě neznamená, že po tobě nejdou. ⰞⰏⰉⰓⰀⰜⰉ ⰗⰞⰅⰜⰘ ⰈⰅⰏⰉ ⰒⰑⰎⰉⰁⰕⰅ ⰏⰉ ⰒⰓⰄⰅⰎ ·:⁖⁘⁙†
10.8.2010 10:52 cross
Rozbalit Rozbalit vše Re: MySQL query z PHP
Odpovědět | | Sbalit | Link | Blokovat | Admin
Ospravedlnujem sa. Islo o inu query, ktora bola niekolko riadkov pod tou, co som si mysel, ze robi problemy.

Ohladom sql injekcie, dane vstupy osetrujem, ked som daval kod sem, tak som to povazoval za nepotrebne.

Dakujem :)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.