Autor Zpráva
Peet
Profil
Dobrý den, potřebuji vědět jak nahradit funkci ze starého mysql_result při použití oop mysqli ?

$result->result(); // neexistuje

Nevite nekdo jak tento problem resit ?

Potrebuji to kdyz treba zjistuji pocet zaznamu z urcite tabulky napr SELECET COUNT(id)... apod.
Nebo když potřebuji otevřít jen jeden záznam tudíž na jeden řádek kódu nejlépe..
YoSarin
Profil
Peet:
Pokud přecházíš na OOP mysqli, zkus zvážit jestli raději nepřejít na PDO.
Jinak mysqli->query() vrací při úspěchu instanci mysqli_result, která má metody fetch_*, které by tě mohly zajímat...
Peet
Profil
Ano viděl jsem i PDO ale spíš bych chtěl pomalu přecházet kompletně na OOP a jako řešení se mi zdá že když budu pomalu poznávat mysqli pochopím v závěru i celkovou podstatu toho všeho. Takže se Vás zeptám jak byste nahradil tento řádek za pomoci mysqli

$result=mysql_result(mysql_query("SELECT authorName FROM authors WHERE id=20"),0); //příklad
a jak by se tento řádek nahradil v mysqli OOP ??
juriad
Profil
$query = "SELECT authorName FROM authors WHERE id=20";

if ($result = $mysqli->query($query)) {

    /* fetch associative array */
    if ($row = $result->fetch_assoc()) {
        echo $row["authorName"];
    }

    /* free result set */
    $result->free();
}

Může se ti zdát, že pomocí mysql_result snadněji napíšeš vytažení jediné hodnoty, ale na druhou stranu, většinou chceš v OOP světě vytáhnout celého autora, se vším všudy a ne jen jeho jméno.
Peet
Profil
Ok děkuji, mrknu na to. Jen proč všude ty ify ? jen proto kdyby to náhodou zkolabovalo ?...
Joker
Profil
Peet:
Jen proč všude ty ify ?
Protože mysqli::query pro SELECT dotaz vrací buď result, nebo false (v případě chyby). Což by skript měl řešit (jinak, než aby to vzápětí spadlo na chybě s voláním neexistující metody).
Peet
Profil
a co když chci třeba vyhodnotit pouze COUNT ??
Someone
Profil
Peet:
Použiješ alias:
SELECT COUNT(*) AS pocet
Peet
Profil
a pote zase fetch_assoc() a potom k nemu dojdu $row['pcoet'] ??
Someone
Profil
Peet:
ano, nebo místo fetch_assoc můžeš použít fetch_object a přistoupit k tomu jako $row->pocet.
Peet
Profil
jojo dekuji. jeste bych se chtel zeptat na jednu vec... ucim se z knihy a tam jsou treba tuzne priklady a videl jsem to i jinde ale vetsinou v knihach se pouziva funkce close() je jedno jestli v oop nebo obecne nebo funkce exit() k cemu slouzi nikdy jsem je nepotreboval..
predem diky
juriad
Profil
Zkus ve větách použít sem tam nějakou čárku. Absolutně ti nerozumím.
Peet
Profil
k čemu se používají fce exit nebo close ?
juriad
Profil
exit je to samé co die, ukončuje vykonávání skriptu. Používá se obvykle po přesměrování, porovnej:
if (isset($_GET["presmeruj"])) {
  header("Location: b.html");
  exit();
}
echo "toto se vypíše, jen když se nepřesměruje";

if (isset($_GET["presmeruj"])) {
  header("Location: b.html");
}
echo "toto se vypíše vždy, ale kvůli přesměrování si toho nevšimneš";

Funkci close neznám a myslím, že nejsem sám; nemyslíš náhodou mysql_close? Ta uzavře spojení s mysql. Umožní snížit nároky skriptu, když víš, že mysql už dále nebudeš potřebovat.
Peet
Profil
Ok děkuji jojo ten rozdíl v tom exitu je ale osobne mi neprijde jako nejak extremne potrebny.

zde jsem našel close:

jde o mysqli a nějaké stmt..

ještě jsem to pořádně nestudoval k čemu je to stmt.
ale je tam prostě nějaký kus kódu a na konci $stmt->close();

Vaše odpověď

Mohlo by se hodit

Odkud se sem odkazuje


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: