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: 5 let
|
0