Autor Zpráva
danhill
Profil
Dobrý den,
snažím se vytvořit funkci,ale nedaří se mi to.
Prosím co mám špatně?
Funkce by měla vždy jen prostě vrátit počet řádků.

Když udělám tohle tak to chodí:
    $sum_query = $mysqli->query("SELECT user FROM final WHERE  user='".$ID."'");
    $sum = mysqli_num_rows($sum_query);
    echo $sum;

Ale když se pokusím udělat tohle,tak dostanu chybu "Call to a member function query() on a non-object ":
$ID=487;
function sumfinals ($ID) {
    $sum_query = $mysqli->query("SELECT user FROM final WHERE  user='".$ID."'");
    $sum = mysqli_num_rows($sum_query);
    return $sum;
}
echo $sum=sumfinals ($ID);

Děkuji moc.
juriad
Profil
danhill:
To je proto, že zevnitř funce máš přístup je poměnným, které jsou:
- uvnitř definované
- předané jako parametry
- definované venku v případě anonymní funkce a použití klauzuje use
- proměnné označené uvnitř funkce jako globální
- superglobání proměnné

Pro tebe to prakticky znamená, že bys měl přidat té funkci parametr $mysqli.
danhill
Profil
Jaj,tak to je něco nového pro mě.Moc nerozumím tomu co jsi napsal.
Kam mám přidat ten parametr $mysqli ?
Monkeys
Profil *
danhill:

niekde mas definovane $mysqli = new mysqll();

a do tej funkcie len pridas riadok
function sumfinals ($ID) {
global $mysqli
    $sum_query = $mysqli->query("SELECT user FROM final WHERE  user='".$ID."'");
    $sum = mysqli_num_rows($sum_query);
    return $sum;
}
danhill
Profil
Ano to mám v config.php
$mysqli = new mysqli("$hostname","$dbname","$pass","$username");
Pak mám function.php
Tak je mimo jiné i tato funkce,která mi nejde.
Jak config.php tak function.php mam include v daném php ve kterém je definováno $ID=487; a taky volán výsledek funkce.
Nyní to mám jak píšeš:

function sumfinals ($ID) {
    global $mysqli;
    $sum_query = $mysqli->query("SELECT user FROM final WHERE  user='".$ID."'");
    $sum = mysqli_num_rows($sum_query);
    return $sum;
}

Ale výseldek je stejný
Fatal error: Call to a member function query() on a non-object
Lonanek
Profil
function sumfinals ($ID) {
    global $mysqli;
    $sum_query = $mysqli->query("SELECT user FROM final WHERE  user='".$ID."'");
    $sum = $sum_query->num_rows;
    return $sum;
}
Keeehi
Profil
Monkeys, danhill, Lonanek:
Zapomeňte, že global vůbec existuje. juriad to napsal dobře, předejte si to parametrem.

function sumfinals ($ID, $mysqli) {
    $sum_query = $mysqli->query("SELECT user FROM final WHERE  user='".$ID."'");
    ...
}

Ta funkce se pak semozřejmě musí volat i s druhým novým parametrem. sumfinals(42, $mysqli);
danhill
Profil
Supeeer - funguje. To poslední od Keehi už prošlo.
Mockrát děkuji,zase jsem se dačo přiučil ...
Díky moc.

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: