Autor Zpráva
gardener
Profil
Zdravím, po přechodu na DIBI jsem narazil na jeden zádrhel, dříve , když jsem si potřeboval vytáhnout nějaký sloupec dat, napriklad z jednoho radku zapsal jsem:

	[pre]$data = mysql_fetch_array($query);
	$privileges= $data[5];
	$user_id= $data[0];

promenne $privileges a $user_id jsem si pak mohl klidne vypsat.

Pokud ale napíši v DIBi
 $data = dibi::fetchAll("SELECT * FROM [tbl_users] WHERE [mail] LIKE %s AND [password]=%s LIMIT 1",$mail,$pass);
$privileges= $data[5];
$user_id= $data[0];


Nedostanu zpět žádnou hodnotu, což je divné, jelikož výsledkem má být pole.

Zkoušel jsem fetchPairs, kde si mohu vyjmenovat pole pro praci ze Selectu ale bohužel stále nic..
$data = $query->fetchPairs('customerID', 'name');


Tuší někdo prosím, kde by mohla být chyba?
Nox
Profil
gardener
Jakmile je nějaký problém kde figurují proměnné, tak použij var_dump a přidej nám info, co vypsal

Jinak tuším že to bude v result_typu u fetche, ale co s tím přesně nevím

Stejně je přístup přes čísla SILNĚ ošementný...změníš tabulku a musíš popřepisovat všechny místa, kde s tím pracuješ

$data = dibi::fetchAll("SELECT * FROM [tbl_users] WHERE [mail] LIKE %s AND [password]=%s LIMIT 1",$mail,$pass);
$privileges= $data["priviledges"];
$user_id= $data["user_id"];
// nebo jak máš pojmenovaný ty sloupce...
Majkl578
Profil
Nox
nesmysl, fetchAll vraci pole DibiRow objektu...

oblibil jsem si DibiFluent:

$data = dibi::select('*')
			->from('tbl_users')
			->where('[mail] LIKE %s && [password]=%s', $mail, $pass)
			->limit(1)
			->execute()
			->fetchAll();
//dump vysledneho pole
var_dump($data);

//pristup k prvnimu prvku pole s nazvem 'name'
echo $data[0]->name;
gardener
Profil
NOX to řešení bohužel nefunguje, DibiFluent mi připadá skoro až složitější, než klasický mysql_fetch_array, navíc by nebylo špatné kdybych mu mohl jako parametr předat rovnou promennou s dibi::query
Jan Tvrdík
Profil
gardener:
1. Dibi: Quick Start
2. To o co se pokoušíš je očividně chyba návrhu aplikace na tvé straně.
3.
$query = dibi::query("SELECT * FROM [tbl_users] WHERE [mail] LIKE %s AND [password]=%s LIMIT 1",$mail,$pass);
$row = $query->fetch();
$privileges= $row['privileges'];
$user_id= $row['user_id'];
gardener
Profil
Ano, to je ono, díky, quick start jsem přečetl, ale tento problém se tam nikde zrovna neobjevil...problém je v tom, že nemám ještě dostatečné znalosti OOP, takže mám občas problém uvědomit si, že zde proměnná volá metodu a ne že fce, resp. metoda do parametru přebírá proměnnou
$row = $query->fetch();

oproti

mysql_fetch_array $query);

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: