2016-04-16 8 views
0

Ich habe ein seltsames Problem bei der Arbeit mit MySQL mit PHP und mysqli-Objekt. Ich habe Benutzer, den ich benutze, um mich mit MySQL zu verbinden, und dieser Benutzer hat genug Erlaubnis, mit spezifischer Datenbank zu arbeiten. Alles funktioniert gut.Wie behandelt man nicht genug Berechtigungen in PHP mysqli?

Aber ich versuche, eine Liste aller Datenbanken zu bekommen. Der Benutzer hat keine Berechtigungen dafür. Natürlich kann ich keine Ergebnisse meiner Anfrage sehen. Aber das Seltsame ist, dass ich auch nichts in $ mysqli-> errno habe, $ mysqli-> error (keine Berechtigung verweigert oder irgendeine Art von Fehler!) Und mein $ result ist nicht FALSE. In dieser Situation sieht also alles so aus, als ob die Abfrage gut ausgeführt wurde und es keine Datenbanken auf dem Server gibt (das stimmt natürlich nicht).

Die Frage ist nicht, wie man dem Benutzer Rechte geben kann, SHOW DATABASES auszuführen. Die Frage ist: Warum sehe ich keine Fehler, während der Benutzer keine Berechtigung hat, bestimmte Abfragen auszuführen? Und weiter, wie man solche Situation richtig behandelt?

Ich benutze diesen Code und es nicht mit der Situation umgehen, da $ Ergebnis nicht falsch - es ist nur normal $ Ergebnis, aber mit leeren Reihen

$result = $mysqli->query("SHOW DATABASES"); 
if($result === FALSE){ 
    echo 'We've got MySQL error! '.$mysqli->errno.':'.$mysqli->error); 
} 

Schätzen Sie jede Art von suggections!

+0

Wie unter [SHOW DATABASES Syntax] (https://dev.mysql.com/doc/en/show-databases.html) dokumentiert, "* sehen Sie nur die Datenbanken, für die Sie eine Art von Privileg haben *" . – eggyal

Antwort

0

Bingo! Danke Eggyal!

Mein Benutzer sieht nur Datenbanken, auf die er zugreifen kann. Ich dachte, dass er Fehler bekommen wird, wenn er keine Erlaubnis hat, Datenbanken auf dem Server aufzulisten. Jetzt ist alles klar!