| Autor | Zpráva | ||
|---|---|---|---|
| luma64 Profil |
#1 · Zasláno: 13. 11. 2019, 12:12:11
Pozdravujem ! Pri používani WHILE v php kóde , ak neexistoval žiaden záznam, tento select ošetril pomocou if , napríklad:
$query = "Select id, meno from zamestnanci where id= '100'";
$result = mysql_query($query) or die(mysql_error());
if ($result)
{
//tu som dostal množinu záznamov a vypísal som napríklad záhlavie výstupu
while($row = mysql_fetch_array( $result ))
{
id = $row['id'];
$meno = $row['meno'];
//vypisovanie údajov...
}
}
else
{
echo "ziaden zaznam"
}Aká je pri foreach konštrukcia, tj aby po nulovom výskyte nerobil nič a foreach preskočil ? $id = 100;
$stmt = $pdo->prepare("Select id, meno from zamestnanci where id = :id" );
$stmt->bindValue(':id', $id);
$stmt->execute();
// TU nejaky if, ktory, ak je podmienka splnena vypíše napríklad záhlavie výstupu
foreach ($stmt as $row)
{
$meno = $row[meno'];
//vyisovanie údajov
}
//ak nie je žiaden záznam potom vypísať napríklad Počet záznamov = 0 |
||
| Tomášeek Profil |
#2 · Zasláno: 13. 11. 2019, 12:42:18
luma64:
To jako fakt? Ta podmínka bude fungovat na stejném principu. S foreach/while to nemá co dělat. Zkus přemýšlet. |
||
| N71 Profil * |
#3 · Zasláno: 13. 11. 2019, 14:10:57
Nikde nevytahuješ hodnoty, které po vykonání toho statementu pravděpodobně databáze vrátila. Například pomocí $stmt->fetchAll(). Kontrolu délky/prázdnosti pole už pak asi zvládneš (nebo dělat nebudeš, foreach nad prázdným polem neudělá nic).
|
||
| Taps Profil |
#4 · Zasláno: 13. 11. 2019, 20:43:52
luma64:
Pokud z databáze získáváš jen jeden řádek tak cyklus while nebo foreach je zbytečný, přesně tak ak píše Tomášeek |
||
| Kajman Profil |
#5 · Zasláno: 14. 11. 2019, 08:01:34
Ona je blbě i ta první ukázka s while, protože $result bude v pořádku, i když bude výsledkem dotazu nula řádků. A pokud $result nebude ok (nepovedl se dotaz), skončí skript už na die.
U pdo je blbé, že rowcount nevrací u selectu počet řádků, proto bych také použil fetchAll a na získaném poli použil klasické count. |
||
|
Časová prodleva: 6 let
|
|||
0