Fatal error: Call to a member function query() on a non-object in admin.php on line 219
Habe ich suchte eine Menge im Grunde die gleichen Fragen auf, SO dass die nicht schien zu helfen. Schon eine Weile her ist, habe ich berührt, php, so dass ich vermute, es gibt eine einfache Lösung, aber wirklich kann ' T es herausfinden.
config.php: (enthalten in admin.php)
$mysqli = new mysqli($mHost, $mUser, $mPass, $db);
admin.php:
$sqlQuery = "INSERT INTO `category` (`id`, `name`) VALUES ('', '$_POST[name]')";
$result = $mysqli->query($sqlQuery);
var_dump($result) liefert:
NULL
und Fehler gibt:
Fatal error: Call to a member function query() on a non-object in
- Haben Sie jeder Versuch zu Debuggen?
- Überprüfen Sie Ihre Datenbank-Verbindung. Sind Sie sicher, dass Sie die richtigen Werte für $mHost, $mUser, etc.?
- Sie haben eine Menge von code mit einem Fehler in Zeile 219. Es scheint, $mysqli nicht ein mysqli-Objekt mehr. Vielleicht gibt es einen code vor, dass dort, wo $mysqli ist irgendwie verändert.
- Nebenbei bemerkt: vielleicht möchten Sie das ändern
$_POST[name]
zu$_POST['name']
jedoch unter Verwendung einer solchen Methode lässt Sie offen für SQL-injection. - Du bist falsch... OK:
"{$_POST['name']}"
"$_POST[name]"
; NG:"$_POST['name']"
- Typisch, verbrachten über 2 Stunden versucht, diese zu lösen vor der Veröffentlichung und es ist ein grundlegender Fehler. Die include-Datei für die config..nicht enthalten. Jeder Kommentar wertvoll war, obwohl, nur wollte es funktioniert, bevor hinzufügen von Sicherheit, obwohl die Seite ist nur zugänglich für admins. Danke.
- Mein Fehler - @Gewissen
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sie sind nicht das Ergebnis überprüfen der Aufruf
new mysqli
. Wenn das fehlschlägt, dann$mysqli
null und nicht ein gültiges Objekt können Sie die Abfrage.Auch, durch den Aufbau von SQL-Anweisungen mit Variablen außerhalb, verlassen Sie sich offen für SQL-injection-Angriffe. Außerdem werden alle input-Daten mit single-quotes in der es, wie der name "O ' Malley", wird die Luft sprengen Sie Ihre SQL-Abfrage. Bitte erfahren Sie mehr über die Verwendung von parametrisierten Abfragen, vorzugsweise mit der PDO-Modul, zum Schutz Ihrer web-app. Meine Website http://bobby-tables.com/php hat Beispiele, und diese Frage hat viele Beispiele im detail.
In die darlegen, sollten Sie rufen
Dadurch können Sie nicht haben, zu überprüfen, die Werte zurückgeben, legen Sie einfach
try { ... } catch { ... }
Blöcke.