Fatal error: Unsupported operand types
Ich bekomme immer wieder die folgende Fehlermeldung und ich wurde gefragt, wie es zu beheben.
Fatal error: Unsupported operand types on line 97
Seine Umgebung unten aufgeführten code. Ich kann die Liste der vollständige code, falls erforderlich.
PHP-code
$total_rating_points = mysqli_fetch_array($result);
if (!empty($total_rating_points) && !empty($total_ratings)){
$avg = (round($total_rating_points / $total_ratings,1));
$votes = $total_ratings;
echo $avg . "/10 (" . $votes . " votes cast)";
} else {
echo '(no votes cast)';
}
Hier ist die Zeile 97
$avg = (round($total_rating_points / $total_ratings,1));
Hier ist der vollständige code.
function getRatingText(){
$dbc = mysqli_connect ("localhost", "root", "", "sitename");
$page = '3';
$sql1 = "SELECT COUNT(*)
FROM articles_grades
WHERE users_articles_id = '$page'";
$result = mysqli_query($dbc,$sql1);
if (!mysqli_query($dbc, $sql1)) {
print mysqli_error($dbc);
return;
}
$total_ratings = mysqli_fetch_array($result);
$sql2 = "SELECT COUNT(*)
FROM grades
JOIN articles_grades ON grades.id = articles_grades.grade_id
WHERE articles_grades.users_articles_id = '$page'";
$result = mysqli_query($dbc,$sql2);
if (!mysqli_query($dbc, $sql2)) {
print mysqli_error($dbc);
return;
}
$total_rating_points = mysqli_fetch_array($result);
if (!empty($total_rating_points) && !empty($total_ratings)){
$avg = (round($total_rating_points / $total_ratings,1));
$votes = $total_ratings;
echo $avg . "/10 (" . $votes . " votes cast)";
} else {
echo '(no votes cast)';
}
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
$total_rating_points
ist ein array. Sie kann nicht dividieren durch eine Zahl.(editiert, da die MySQL Abfrage Hinzugefügt wurde, um die Frage)
Hast du verwendet
mysql_fetch_array
um dein Ergebnis zu bekommen von MySQL ist, wie der name schon sagt, diese gibt ein array zurück. Sie können nicht rechnen, wie die auf arrays.Sie wollen, ändern Sie Ihre MySQL-Abfrage zu diesem:
Ändern Sie Ihre mysql_fetch_array code zu diesem:
Zurückgeben, die tatsächliche Anzahl, die Sie dann verwenden können, für die Mathematik. Ändern Sie Ihre Anfragen zu diesem format, und Sie sollten gut zu gehen.
Das ist in der Regel verursacht, wenn der Typ der Variablen ist etwas, was Sie nicht erwarten, es zu sein.
Dump aus den Variablen$total_rating_points
und$total_ratings
:.. dann arbeiten Sie sich rückwärts durch den code (Prüfungdebug_backtrace()
wenn erforderlich) zu finden, wo es ging schief.Edit: duhhh.. ich sah an Ihren code erneut und sah das Problem. Die
$total_rating_points
ist ein array, und dieses ist die Ursache des Problems. Wie teilen Sie ein array von einer Zahl? Antwort: das können Sie nicht.Tun, die Sie teilen möchten, und jedes der Mitglieder des Arrays
$total_ratings
? eg:...oder wollen Sie dividieren die Summe?
Verwenden
array_sum()
auf$total_rating_points
und$total_ratings
.