Cannot use object of type mysqli_result as array, wo ist das Problem?
$p = "SELECT gruppeid FROM users WHERE id='$ses'";
$res = $con->query($p);
while ($r = $res->fetch_assoc()) {
$sql = "SELECT COUNT() c FROM stat WHERE gruppeid=$r[gruppeid] AND aufgabeid=$_GET[fertig]";
$r = $con->query($sql);
$count = $r->fetch_assoc();
echo $count['c'];
if ($count['c'] == 3) {
$rank = "SELECT MAX(ranking) as last FROM ranking WHERE aufgabeid = $_GET[fertig]";
$safe = $con->query($rank);
$dis = $safe->fetch_assoc();
$rang = $dis['last'] + 1;
$i = "INSERT INTO ranking (gruppeid, aufgabeid, ranking) VALUES ('$r[gruppeid]', '$_GET[fertig]', '$rang')";
$ausführen = $con->query($i);
}
}
Hallo,
ich bekomme immer eine Fehlermeldung in meinem Code, aber ich weiß nicht woran es liegt!
Cannot use object of type mysqli_result as array in C:\xampp\htdocs\website\abschluss.php on line 34
Ich würde mich freuen, wenn mir jemand helfen kann. Danke!
1 Antwort
Poste den Code am besten mal bei pastebin.com oder so, hier ist der nicht wirklich gut lesbar. Wenn möglich die komplette Datei, damit auch die Zeilennummern passen.
Ein paar kleine Fehler / Probleme fallen allerdings sofort auf:
- Du benutzt Variablen direkt innerhalb von "" Strings, das ist zwar nicht völlig falsch, also zumindest funktioniert es meistens, jedoch ist es unnötige "Zusatzarbeit" für PHP, daher Variablen besser immer so einfügen:
$sql = "SELECT bla FROM blubb WHERE lol = '". $var ."'";
- Den Key eines Arrays solltest du immer in Anführungszeichen setzten, also z.B: so:
$r['gruppeid']
und nicht:
$r[gruppeid]
Letzteres kann zwar auch funktionieren, aber in dem Fall wird gruppeid zunächst als Konstante gewertet und erst wenn diese Konstante nicht existiert wird nach einem Key mit diesem Namen gesucht.
- Auch wenn die betreffende Zeile aktuell nicht ersichtlich ist, die Fehlermeldung bedeutet einfach, dass du direkt auf ein mysqli Ergebnisobjekt zugreifen willst, bevor du "fetch_assoc()" angewandt hast.
// Edit: Der Grund ist wohl, dass du $r doppelt benutzt, du setzt $r innerhalb der Schleife neu und weist dieser Variable eben ein mysqli-Ergebnis zu, später versuchst du dann wieder auf $r[gruppeid] zuzugreifen, was du an der Stelle aber schon überschrieben hast.
Das ist also der Fehler, danke für die detaillierte Antwort!