Autor | Zpráva | ||
---|---|---|---|
Viktor 36 Profil |
Ahojte,
Chcem urobiť výpis z MySQL, ale chcem, aby to písalo iba jeden riadok, kde sa mnou zadané ID rovná niečomu v MySQL. <?php if($_GET["id"]){ $id = strtolower($_GET["id"]); mysql_connect("localhost","meno","heslo"); mysql_select_db("menodb"); $výsledek = mysql_query("SELECT * from filmy WHERE nazev = '$id'"); while ($řádek = mysql_fetch_object($výsledek)) { echo "<TR>"; echo "<TD>".$řádek->nazev."</td>"; echo "<TD>".$řádek->original_nazev."</td>"; echo "<TD>".$řádek->zeme_vzniku."</td>"; echo "<TD>".$řádek->reziser."</td>"; echo "<TD>".$řádek->herci."</td>"; echo "<TD>".$řádek->zanr."</td>"; echo "<TD>".$řádek->delka."</td>"; echo "<TD>".$řádek->rok."</td>"; echo "<TD>".$řádek->hodnoceni."</td>"; echo "</TR>"; } mysql_free_result($výsledek); ?> Údaje v MySQL sú nazev, original_nazev, atď. (Môžete vidieť vo výpise). Keď to vypisujem ako celú databázu, tak to funguje. Jediný problém mám s riadkom $výsledek = mysql_query("SELECT * from filmy WHERE nazev = '$id'");
|
||
Amunak Profil |
Nedoporučuji používat diakritiku v názvech proměnných v PHP. Taky bys neměl používat zastaralé mysql_query, ale nějaké jeho novější obdoby (mysqli, PDO). Co se dotazu týče, pokud je ID číslo, nepiš kolem něj uvozovky. Jsi si taky jistý, že záznam s takovým ID existuje? Zkus toto:
mysql_query( "SELECT * FROM `filmy` WHERE `nazev` = " . $id ); Taky snad nepotřebuješ ten cyklus, vždycky dostaneš jen jeden řádek. |
||
Viktor 36 Profil |
To id má byť reťazec znakov(string). Zatiaľ skúsim toto. A robím to kamarátovi. On tam použil tie premenné s diakritikou, ale ešte som to nezmenil.
Edit : Skúsil som to s číslami a už to funguje, ale potreboval by som to so slovami a to mi nefunguje. |
||
Amunak Profil |
#4 · Zasláno: 18. 12. 2012, 22:30:27
Viktor 36:
Musíš porovnávat to, co máš v databázi. Pokud je to sloupec textový, třeba varchar, porovnáváš text (a je to v apostrofech). Pokud je to číslo, porovnáváš číslo. Když jsem četl název proměnné id , předpokládal jsem, že jde o unikátní číselný identifikátor. Můžeš zkusit třeba
mysql_query( "SELECT * FROM `filmy` WHERE `nazev` = '" . $id . "'"); |
||
Tori Profil |
Viktor 36:
Chybí ošetření vstupu: pokud je $id číslo, přetypovat na číslo. Pokud může obsahovat i písmena, prohnat přes mysql_real_escape_string. |
||
Viktor 36 Profil |
#6 · Zasláno: 19. 12. 2012, 17:03:02 · Upravil/a: Moderátor (editace znemožněna) 19. 12. 2012, 18:48:47
No, ja som to kopíroval z jedného mojho scriptu, kde to berie čísla a nezmenil som premennú. Ďakujem vám za pomoc. Už mi to funguje bez problému :)
Potrebujem ešte niečo ... <?php if($_GET["film"]){ $film = strtolower($_GET["film"]); $film = str_replace('_',' ',$film); mysql_connect("localhost","prosecky_el09a","********"); mysql_select_db("prosecky_el09a"); $vysledek = mysql_query("SELECT * FROM `filmy` WHERE `original_nazev` = '" . $film . "'"); while ($radek = mysql_fetch_object($vysledek)) { ?> Moderátor Davex: Zcenzurováno heslo do databáze. Příště ho prosím raději nezveřejňuj.
|
||
Tori Profil |
#7 · Zasláno: 19. 12. 2012, 20:34:39
Viktor 36:
„Dalo by sa urobiť, aby som do premennej $film dal niečo s diakritikou a porovnalo by to dobre s niečím s diakritikou v databáze?“ Pro jistotu bych nastavila správné kódování pro spojení s DB. Uvedený dotaz najde pouze záznamy, kde se zadání přesně shoduje s textem v DB. Jinak můžete použít LIKE + zástupné znaky, nebo fulltext (nemám teď po ruce lepší odkaz na fulltextové vyhledávání). Jestli chcete aby i zadání bez diakritiky našlo v DB text s diakritikou, musí mít ten sloupec správně nastavené porovnávání. Koukněte např. na porovnávání podle utf8_czech_ci vs. podle utf8_general_ci. |
||
Časová prodleva: 11 let
|
0