Autor | Zpráva | ||
---|---|---|---|
Fastman Profil |
Zdravím,
Nevím proč, ale když si zadám do xxx.php souboru proměnou $overuji tak vyskočí Resource id #4 $overuji=mysql_query("SELECT jmeno FROM uzivatele WHERE jmeno LIKE '$name'", $connection); $row2 = mysql_fetch_assoc($overuji); |
||
juriad Profil |
#2 · Zasláno: 22. 1. 2015, 09:50:45
Fastman:
Výsledkem dotazu není seznam řádků, ale objekt typu Resource, skrze který se následně k jednotlivým řádkům (pomocí funkce mysql_fetch_assoc a dalších) přistupuje. Toto chování je tedy správné. Samotný výsledek funkce mysql_query ti není nijak užitečný. |
||
Fastman Profil |
#3 · Zasláno: 22. 1. 2015, 09:59:06
Zkoušel jsem vypsat i proměnnou $row2, ale ta nevypsala nic.
|
||
Taps Profil |
#4 · Zasláno: 22. 1. 2015, 10:07:07
Fastman:
a níže uvedený zápis rovněž nic nevypíše? echo $row2['jmeno']; |
||
juriad Profil |
#5 · Zasláno: 22. 1. 2015, 10:08:33
A vrátil dotaz alespoň jeden řádek?
Co vrátí funkce mysql_num_rows? Mimochodem, co je to nic? Pokud tě zajímají podrobnosti o proměnné, použij místo echo var_dump, který je mnohem ukecanější. Také zvaž, zda nepoužít raději mysqli_* místo zastaralého a v budoucnu zrušeného rozhraní mysql_. (Dal bych odkaz na Fisirův web, pokud by zrovna fungoval.) |
||
Fastman Profil |
#6 · Zasláno: 22. 1. 2015, 10:12:06 · Upravil/a: Fastman
Taps:
Nic nevypsal. juriad: mysql_num_rows vypsal Resource id #4 |
||
Taps Profil |
#7 · Zasláno: 22. 1. 2015, 10:30:32
Fastman:
V případě, že se nevypsal žádný údaj tak vypadá, že žádná data neodpovídají podmínce v SQL dotazu. Jaký výraz obsahuje proměnná name a jaký výraz máš uložený v databázi? |
||
Fastman Profil |
#8 · Zasláno: 22. 1. 2015, 10:32:58
Zkusil jsem následující:
var_dump($row2); -> int(0) var_dump($overuji); -> resource(4) of type (mysql result) var_dump($row2['jmeno']); -> NULL za -> je výpis var_dump Použito s "mysql_num_rows". |
||
jefitto44 Profil |
Ešte najprv musíš dáta z tabuľky fetchnúť (do poľa, alebo do objektu) a na to slúži funkcia mysql_fetch_assoc()/mysql_fetch_array()/mysql_fetch_object() - to sú deprecated mysql funkcie
$overuji=mysql_query("SELECT jmeno FROM uzivatele WHERE jmeno LIKE '$name'", $connection); $row2 = mysql_fetch_assoc($overuji); $row3=mysql_fetch_assoc($row2); A teraz máš prístupné hodnoty z DB formou $row3["jmeno"], kde ["jmeno"] je názov stlpca v databáze Ak vyberáš viac riadkov, musíš použiť v cykle while($row3=mysql_fetch_assoc($row2)) { echo $row3["jmeno"]; } |
||
Fastman Profil |
#10 · Zasláno: 22. 1. 2015, 10:48:16
jefitto44:
To bohužel taky nejde a ve var_dump to ukazuje NULL |
||
anonymníí Profil * |
#11 · Zasláno: 22. 1. 2015, 11:18:20 · Upravil/a: anonymníí
jefitto44:
Nemáš tam těch fetchů málo? Co třeba takto? :-) $row2 = mysql_fetch_assoc($overuji); $row3 = mysql_fetch_assoc($row2); $row4 = mysql_fetch_assoc($row3); $row5 = mysql_fetch_assoc($row4); $row6 = mysql_fetch_assoc($row5); Fastman: echo mysql_num_rows($overuji); vrátí počet řádků. Pokud bude větší než 0, nějaké ti to našlo a je na místě použít mysql_fetch_assoc($overuji) . Pokud je to 0, v databázi se žádný vyhovující záznam nenachází.
Ten dvojí fetch, co psal jefitto, je samozřejmě nesmysl. Proměnou $overuji nikde nevypisuj (třeba echem), nemá to cenu a není pro tebe podstatná. Tebe zajímá až ten fetch. |
||
Fastman Profil |
Nakonec jsem to vyřešil pomocí jednoho návodu http://www.w3schools.com/php/php_mysql_select.asp
// Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT jmeno FROM uzivatele WHERE jmeno='$name'"; $result = mysqli_query($conn, $sql); $row = mysqli_fetch_assoc($result) ?> A v PHP se ptám pomocí echo " . $row["jmeno"]. " Nakonec je možný, že to mohl dělat includovaný soubor, kde byl ten SQL dotaz. Proto jsem tohle všechno dal do jednoho souboru. |
||
jefitto44 Profil |
#13 · Zasláno: 22. 1. 2015, 13:11:01
To asi nie, includovanie s databázou nemá nič spoločné
|
||
Časová prodleva: 10 let
|
0