Autor Zpráva
jiricz
Profil
Zdravím a předem se omlouvám zda-li to již v nějakém vláknu je, ale nedohledal jsem.

Upravuji teď část vnitřku našeho webu kde máme jednoduchou evidenci a přepisuji metodu mysql na mysqli.
při používání mysql jsem na při potřebě vyhledávání jedné konkrétní hodnoty v databázi používal toto:
$xxx = @mysql_result(mysql_query("SELECT email FROM zakaznik WHERE id_zakaznik='".$idzakaznik."'"),0);

nyní bych potřeboval toto uzpůsobit pro mysqli, ale zatím jsem nedohledal nejvoděnější řešení. Existuje vůbec nějaká varianta ideálně nějakého takovéhoto zápisu?
blaaablaaa
Profil
Co takhle?
$email = $mysqli->query("SELECT email FROM zakaznik... ")->fetch_object()->email;

V tvém skriptu ještě chybí ošetření proti sql injection.
David_0
Profil *
Třeba má ošetření o řádek výš, jen to sem nenapsal. (Ale nevěřím tomu)
$idzakaznik = intval($_GET['idzakaznik'];
Jinak tohle jsi měl spíš hledat v oficiální dokumentaci, nic složitého na tom není. Viz www.php.net/manual/en/mysqli.query.php


P.S. Nemůžu editovat. Vypadla mi závorka.
jiricz
Profil
Ošetření proti sql injection mám zahrnuto - nekopíruji zde celou část kódu a také ne přesný zápis ale jen jako "vzor".
Nicméně používám procedurální způsob zápisu ne OOP tudíž řešení od pana blaaablaaa pro mne není vhodné.

Aktuálně používám tento způsob - opět píšu vzorově.
$result = mysqli_query($conn, "SELECT * FROM....");
while($row = mysqli_fetch_assoc($result)) {
      $email = $row['email'];
}

Jde však o zápis do více řádků - řeším to spíše z hlediska jednoduchosti....
blaaablaaa
Profil
jiricz:
Pak se stačí podívat do manuálu a můj příklad podle toho upravit. Je zbytečné u získávání jedné hodnoty používat cyklus.
David_0
Profil *
Nevím, co přesně chceš. Pokud je to vyloženě zápis na jeden řádek, tak je to takto:
$email = mysqli_fetch_assoc(mysqli_query($conn, 'SELECT email FROM zakaznik WHERE id_zakaznik = 123'))['email'];
1. Protože se hledá podle id_zakaznik a předpokládám, že je unikátní, bude ti to vracet nanejvýš 1 řádek. Nemusíš používat cyklus while.
2. Já osobně bych spíš dal přednost rozdělení na více řádků. Nejdříve si uložit $result z query a pak $row z fetch_assoc. Můžeš pak kontrolovat jestli ten $result není false, pokud nepoužíváš výjimky.

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:

0