Oznámení
Omlouváme se, provoz fóra byl ukončen
isset hlasí neexistující proměnnou
Upozornění: Tohle vlákno je hodně staré.
před 9 lety
- Chbox
- Člen | 125
return dibi::fetchAll
(' SELECT [inzeraty.id], [profese], [obory.nazev] AS [obor], [kraje.nazev] AS [kraj], [obce.obec] AS [obec], [odmena]
FROM [inzeraty]
%if', isset($user), 'WHERE [user]=%s', $user
);
Vyskočí laděnka → Notice: Undefined variable: user
Nevíte, co je špatně?
Editoval Chbox (10. 2. 2011 11:21)
před 9 lety
- Milo
- Nette Core | 1119
return dibi::fetchAll('
SELECT
[inzeraty.id],
[profese],
[obory.nazev] AS [obor],
[kraje.nazev] AS [kraj],
[obce.obec] AS [obec],
[odmena]
FROM
[inzeraty]
%if', isset($user), 'WHERE [user] = %s', isset($user) ? $user : NULL, '%end
');
před 9 lety
- Chbox
- Člen | 125
huh, díky, netušil jsem, že se to musí ošetřit i na dosazované proměnné. Aspoň ze vzorového příkladu mi to nedošlo nebo je to nějaká změna od ver. 1.2?
viz. vzor. příklad:
$user = ???
dibi::query('SELECT *FROM [table]%if', isset($user), 'WHERE [user]=%s', $user);
Editoval Chbox (10. 2. 2011 14:18)
před 9 lety
- Milo
- Nette Core | 1119
Jde o to, že proměnou $user
nemáš definovanou, proto
vyskočí ta notice jako kdekoliv jinde v kódu PHP. Ve Quick-startu definice
je. isset()
je tam použito pro testovani na NULL
a ne
pro testovani existence promenne.
function getData( $user = NULL )
{
// staci testovat 1x, $user je vzdy definovano
return dibi::fetchAll('SELECT ...... %if', isset($user), 'WHERE user = %s', $user );
}
// $user se musi testovat 2x, neni jiste zda je promenna nadefinovana
dibi::fetchAll('SELECT ...... %if', isset($user), 'WHERE user = %s', isset($user) ? $user : NULL );
před 9 lety
- Chbox
- Člen | 125
díky za vysvětlení, měl jsem za to, že to řeší i existenci.