Wie man MySQLi-Fehler Informationen in verschiedenen Umgebungen? / mysqli_fetch_assoc() erwartet parameter 1 to be mysqli_result
In meinem lokalen/Entwicklungsumgebung, die MySQLi-query ausführen OK. Allerdings, wenn ich es hochladen auf meiner web-host-Umgebung, bekomme ich diesen Fehler:
Fatal error: Call to a member function bind_param() on a non-object in...
Hier ist der code:
global $mysqli;
$stmt = $mysqli->prepare("SELECT id, description FROM tbl_page_answer_category WHERE cur_own_id = ?");
$stmt->bind_param('i', $cur_id);
$stmt->execute();
$stmt->bind_result($uid, $desc);
Überprüfen meiner Abfrage, ich habe versucht, führen Sie die Abfrage über control panel phpMyAdmin und das Ergebnis ist OK.
Können wir sehen, wo sind Sie zu initiieren
Es könnte sein, dass Ihr MySQL-Benutzer fehlen die Berechtigungen dazu ein
Erscheint, was zu beachten ist, dass es keine mysqli verfügbar ist oder Sie versehen falsche Zugangsdaten für die MySQL-Verbindung.
$mysqli
variable ?Es könnte sein, dass Ihr MySQL-Benutzer fehlen die Berechtigungen dazu ein
SELECT
Abfrage. Hast du das überprüfen?Erscheint, was zu beachten ist, dass es keine mysqli verfügbar ist oder Sie versehen falsche Zugangsdaten für die MySQL-Verbindung.
InformationsquelleAutor siopaoman | 2014-03-26
Du musst angemeldet sein, um einen Kommentar abzugeben.
Manchmal Ihre Abfrage fehl, und Sie wissen nicht warum. Daher ist es sehr wichtig, konfigurieren Sie PHP und mysqli-melden Sie alle Fehler.
, Wie man die Fehlermeldung in mysqli
Erste von allen, immer diese Zeile, bevor MySQLi-connect in alle Ihre Umgebungen:
Nach, dass alle MySQL-Fehler werden übertragen in die PHP-Ausnahmen. Nicht abgefangene Ausnahme macht wiederum ein fataler Fehler. So, im Falle einer MySQL-Fehler erhalten Sie eine herkömmliche PHP-Fehler. Das wird sofort machen Sie sich bewusst, welche Fehler verursachen. Ein stack-trace führen Sie zu der exakten Stelle, an der Fehler aufgetreten ist.
Konfigurieren von PHP in verschiedene Umgebungen
Hier eine Zusammenfassung meines Artikels auf PHP error reporting:
Beachten Sie, dass Sie in der Lage, um zu sehen, PHP-Fehler im Allgemeinen. Und hier in der Tat geht die Frage der unterschiedlichen Umgebungen:
Müssen Sie legen Sie die entsprechenden Optionen für die Konfiguration die folgenden Werte
Auf einem Entwicklungs-server
error_reporting
sollteE_ALL
Wert;display_errors
sollte auf 1 gesetzt werdenAuf einem Produktions-server
error_reporting
sollteE_ALL
Wert;display_errors
sollte auf 0 gesetzt werdenlog_errors
sollte auf 1 gesetzt werden, Wie, es tatsächlich zu verwenden?
Nur entfernen Sie code, der überprüft, ob der Fehler manuell, alle diejenigen, die
or die()
,if ($result)
und so. Schreiben Sie einfach Ihre Datenbank-Interaktion code sofortwieder, witohut alle Bedingungen rund um. Wenn ein Fehler Auftritt, dann wird er behandelt wie jeder andere Fehler in deinem code. Zum Beispiel, auf einem Entwicklungs-PC es sill nur auf dem Bildschirm angezeigt. Und für eine live-site benötigen Sie einen Fehler wrapper, aber das ist eine andere Geschichte, völlig irrelevant für mysqli und seine Fehler.
, Was mit der Fehlermeldung, die Sie erhalten,
Nach immer die Fehlermeldung, Sie haben zu Lesen und zu begreifen. Es klingt zu offensichtlich, aber die Lernenden Häufig übersehen wird, die extreme Hilfsbereitschaft der Fehlermeldung. Doch die meisten der Zeit, die es erklärt das problem ziemlich einfach. Sagen, wenn es sagt, dass bestimmte Tabelle nicht vorhanden ist, müssen Sie überprüfen, Rechtschreibung, Tippfehler, groß - /Kleinschreibung, Anmeldeinformationen und so. Oder, wenn es sagt, es ist ein Fehler in der SQL-syntax, dann haben Sie zu prüfen, Ihre SQL. Und das problem spot ist direkt vor der Abfrage der Teil zitiert in der Fehler messaage.
Müssen Sie auch Vertrauen die Fehlermeldung. Wenn es sagt, dass die Anzahl der Token entspricht nicht der Anzahl der gebundenen Variablen, dann ist es so. Das gleiche gilt für die abwesenden Tabellen oder Spalten. Angesichts der Wahl, ob es Ihr eigener Fehler oder die Fehlermeldung falsch ist, bleiben Sie immer auf ersteres. Wieder klingt es herablassend, aber Hunderte von Fragen auf dieser Seite beweisen dies, beraten, äußerst nützlich.
Eine Liste, was Sie nie tun sollten, in Bezug auf Fehler eporting
@
)die()
oderecho
oder eine andere Funktion zum drucken der Fehlermeldung auf dem Bildschirm, bedingungslos. Kann PHP echo es alle schon Recht, keine Hilfe ist erforderlich.if($result)
) macht einfach keinen Sinn. Entweder deine Abfrage ist fehlgeschlagen, und Sie werden schon den Fehler Ausnahme, oder es war alles in Ordnung und es gibt nichts zu testen.Aus Neugier, welche eine der oben genannten Vermutungen versehentlich gewonnen?
Alle der oben genannten Eingänge hat mir geholfen. Aber Ihre Antwort speziell gezoomt auf die Ursache. Vielen Dank an alle von Euch. 🙂
Nein, es ist off-topic für Ihre Frage. Alles was Sie brauchen ist ein richtigen code, können später dazu verwendet werden, die in jeder Umgebung. Wenn Sie nicht Vertrauen Sie mir, gehen Sie bitte auf "Meta" und stellen die Frage, "Soll ich schreiben, eine vollständige review von code, einschließlich PHP, mysql, HTML und Bootstrap in Reaktion auf ein "mein code funktioniert nicht" - Frage.
Ausnahmen und schwerwiegende Fehler sind DIE GLEICHEN. dies ist der Punkt, der alle meine Artikel
InformationsquelleAutor Your Common Sense