Warum bekomme ich diese function call-Fehler, die auf einem nicht-Objekt, wenn ich rufe eine Funktion auf ein Objekt?
Fehler:
Fatal error: Call to a member function
bind_param() on a non-object in
/var/www/web55/web/pdftest/events.php
on line 76
Code:
public function countDaysWithoutEvents(){
$sql = "SELECT 7 - COUNT(*) AS NumDaysWithoutEvents
FROM
(SELECT d.date
FROM cali_events e
LEFT JOIN cali_dates d
ON e.event_id = d.event_id
WHERE YEARWEEK(d.date) = YEARWEEK(CURRENT_DATE())
AND c.category_id = ?
GROUP BY DAY(d.date)
) AS UniqueDates";
$stmt = $this->link->prepare($sql);
$stmt->bind_param('i', $this->locationID);
$stmt->execute();
$stmt->bind_result($count);
$stmt->close();
return $count;
}
$this->link->prepare($sql)
erzeugt ein prepared statement für MySQLi.
Warum bin ich immer diese Fehlermeldung?
versuchen Sie ein var_dump($stmt) vor dem bind_param()
bool(false) ... Seltsam.
Auf einer anderen Anmerkung, die bind_param() haben sollte 1 als ersten parameter.
Nein, es sollte die Art, wie der erste parameter, wie hier dokumentiert: us2.php.net/manual/en/mysqli-stmt.bind-param.php
mögliche Duplikate von Call auf eine Memberfunktion auf einem nicht-Objekt, mysqli warum dies geschieht?...
bool(false) ... Seltsam.
Auf einer anderen Anmerkung, die bind_param() haben sollte 1 als ersten parameter.
Nein, es sollte die Art, wie der erste parameter, wie hier dokumentiert: us2.php.net/manual/en/mysqli-stmt.bind-param.php
mögliche Duplikate von Call auf eine Memberfunktion auf einem nicht-Objekt, mysqli warum dies geschieht?...
InformationsquelleAutor Malfist | 2009-06-05
Du musst angemeldet sein, um einen Kommentar abzugeben.
AND c.category_id = ?
- es gibt keine Tabellen-alias c in Ihrer Abfrage.Außerdem versuchen
Die Abfrage hat einen bestimmten "Geruch" wie auch immer, zumindest ist es scheint suboptimal, wenn nicht falsch 😉
AH! Duh! Sollte es e zu.category_id. headdesk
InformationsquelleAutor VolkerK
Ich denke, das problem ist offensichtlich mit der vorbereiten Funktion..
Die Funktion wird wahrscheinlich fehlschlagen, in dem Fall $stmt wäre FALSCH und daher nicht der bind_param-Methode als ein Mitglied.
Überprüfen Sie Ihre Abfrage! Vielleicht gibt es ein problem mit der SELECT-Anweisung. Und überprüfen Sie auch für FALSCH, bevor Sie versuchen, auszuführen, die zu einer member-Funktion auf, was Sie denken, wird ein Objekt zurückgegeben, die von der prepare () - Funktion.
BEARBEITEN
Ich würde vermuten, dass die Aussage kann erroring, weil der sub-Abfrage:
Stattdessen, warum gehst du nicht schreiben Sie Ihre Abfrage wie diese:
P. S. ich glaube, Sie hatte auch eine fehlende einen Anruf zu Holen als gut.. (siehe Beispiel oben)
gut, das kann sein, aber das bedeutet nicht, dass MySQLi kann nicht über etwas beschweren. Ich weiß, es gibt einige Einschränkungen bei der Ausführung von MySQL-code von PHP hauptsächlich zur Verhinderung von SQL-injection.. meist um Unterabfragen..
mysqli-> - Fehler, ist leer.
wie kann ich es korrigieren, dass die sub-Abfrage muss wirklich da sein.
sehen Sie die neuesten code-Beispiel. Nicht, dass das problem lösen?
InformationsquelleAutor Mike Dinescu
$this->Verknüpfung->bereiten Sie diese Aussage nicht Rücksendung der Sache
so ist es Ihnen die Fehler
InformationsquelleAutor maxjackie