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);
Děkuji za odpověď.
juriad
Profil
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
Zkoušel jsem vypsat i proměnnou $row2, ale ta nevypsala nic.
Taps
Profil
Fastman:
a níže uvedený zápis rovněž nic nevypíše?
echo $row2['jmeno'];
juriad
Profil
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
Taps:
Nic nevypsal.


juriad:
mysql_num_rows vypsal Resource id #4
Taps
Profil
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
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
jefitto44:
To bohužel taky nejde a ve var_dump to ukazuje NULL
anonymníí
Profil *
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
To asi nie, includovanie s databázou nemá nič spoločné

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: