Autor Zpráva
novacek
Profil
Dobrý den
v mysql používám tento kod

$seznam = mysql_query("SELECT * FROM host WHERE id ='$id_edit' ");
$vysledek = mysql_fetch_object($seznam);

a následně si výsledek vytahuji dle potřeb dále v kodu

$vysledek->user;

sloupců v tabulce je asi 100 a potřebuji některé udaje dále v kodu.
Nedaří se mi v mysqli podobný dotaz. Vždy musím udělat dotaz a následně to nacpat do proměnné nebo pole.
Nebo to volat jako sloupec
....
while($data = $result->fetch_assoc()) {

$data['user'];

}

Přijde mi to hrozně nepraktické, nebo jsem při přechodu z mysql na mysqli něco přehlédl. Máte někdo radu ?

Předem děkuji
blaaablaaa
Profil
Moc nevím, o co jde, ale i v PHP dokumentaci je odkaz na obdobnou funkci/metodu v mysqli (mysqli_fetch_object / fetch_object).
OT: pokud je id číslo, je důležité ho ošetřit proti SQL Injection ...("SELECT * FROM host WHERE id =".(int)$id_edit); (nebo lépe použít nějakou db vrstvu / statements, které to vyřeší za vás)
novacek
Profil
Ošetření je provedeno pře dotazem.

V apis-php jsem našel tento vzor:

<?php
$mysqli = new mysqli("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT Name, CountryCode FROM City ORDER by ID DESC LIMIT 50,5";
if ($result = $mysqli->query($query)) {
/* fetch object array */
while ($obj = $result->fetch_object()) {
printf ("%s (%s)\n", $obj->Name, $obj->CountryCode);
}
/* free result set */
$result->close();
}
/* close connection */
$mysqli->close();
?>

Ale vždy je nutno načíst výsledek pomocí "while" a tak to musí být celé uzavřené v závorkách "{ ... }" a když je něco co má několik tisíc řádků a dalších závorek tak se v tom ztrácím :)
Proto byl pro mě původní dotaz v mysql jednodužší.
Kcko
Profil
novacek:
while je cyklus, tj. když zpracováváš sadu vícero výsledků, pokud taháš z DB 1 záznam, while skutečně nepotřebuješ. Docela v tom plaveš co?

programmerblog.net/php-mysqli-tutorial-for-beginners

část Fetch records using mysqli_result::fetch_array – object oriented way

Myslíš, že to zvládneš okopírovat?
novacek
Profil
To že je while cyklus vím. :) Přechod z mysql na mysqli je pro mě sakra plavání .... starej pes nové věci. Zažitý postup je na nic ...

jdu plavat. Dík za nakopnutí správným směrem .... takové asociativní pole mě nenapadlo :)
Kcko
Profil
novacek:
Nejde tam o to jestli pouzijes array nebo object.

Spíš o to, abys rozuměl tomu co jaký je rozdíl mezi
vykonáním dotazu
načtením do nějakého setu (array, object ...)
co je while
jak zjistit počet řádků atd.


A nebo se na to uplně vybodni a jak říkal blaaablaaa použij nějakou sofistikovanější DB vrstvu ... např. dibiphp.com
novacek
Profil
Musím se to doučit. Jedná se změnu projektu který běží od roku 2010 verze php 5.3 je plně bez OOP. Pracuje s několika miliony záznamů a pdf souborů.
Navíc se to nedá odstavit. Tak procházím zdrojáky v kopii a koukám co a jak je psáno. Protože musím udělat přechod na php 7.x a ještě jsem omezen tím co bude HW nainstalováno a s externí aplikací.

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