Nicht verwenden Objekt vom Typ PDOStatement als array
Ich möchte, um zu überprüfen, ob manche Spalte der user angeben, hält einen höheren Wert als 0.
Problem
Wenn du die Abfrage, und dann ausführen, Im immer diese Fehlermeldung:
Fatal error: Cannot use object of type PDOStatement as array in C:\xampp\htdocs\recover\admin\create.php on line 40
Mein code (Die Abfrage + durchführen):
if (isset($_SESSION['user'])) {
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username");
$admin->bindValue(':username', $_SESSION['user']);
$admin->execute();
Zeile der Fehler (40):
if ($settings['create_admins'] > 0 || $admin['super_admin'] > 0 ) {
Frage:
Warum bin ich immer diese Fehlermeldung? Wie kann ich es beheben?
Habe ich versucht, dies zu tun:
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = :username");
$admin = $admin->bindValue(':username', $_SESSION['user']);
$admin = $admin->execute();
und immer eine andere Fehlermeldung:
Fatal error: Call to a member function execute() on a non-object in C:\xampp\htdocs\recover\admin\create.php on line 38
Dank!
EDIT: ich brauche das ->fetch-object, aber ich habe einfach das getan, und entledigte sich der Fehler.. Aber es doesn ' T beeinflussen? Ich meine, ich bin echo-Zeile, und es gibt mir eine null (nichts). Warum?
$admin = $CONNECT_TO_DATABASE->prepare("SELECT * FROM admin WHERE username = ".$_SESSION['user']."");
$admin = $admin->fetch();
Es sind viele Beispiele im PHP-Handbuch unter gewusst wie: abrufen von Zeilen mit PDO. Es gibt absolut keine Notwendigkeit zu erraten.
Ich denke der Fehler ist hier $admin = $admin->execute(); brauchst du nicht zu vergeben ist das Ergebnis von execute() , $admin-variable, rufen Sie die execute () -
Machen
Wenn ich entfernt die $admin = vor $admin->, bekomme ich den gleichen Fehler.
dann, wahrscheinlich hast du ein problem mit der Abfrage. Ändern
Ich denke der Fehler ist hier $admin = $admin->execute(); brauchst du nicht zu vergeben ist das Ergebnis von execute() , $admin-variable, rufen Sie die execute () -
Machen
var_dump($admin)
nach $admin = $admin->fetch();
und finden Sie den Ausgang.Wenn ich entfernt die $admin = vor $admin->, bekomme ich den gleichen Fehler.
dann, wahrscheinlich hast du ein problem mit der Abfrage. Ändern
prepare("SELECT * FROM admin WHERE username = ".$_SESSION['user']."");
mit prepare("SELECT * FROM admin WHERE username = '".$_SESSION['user']."'");
InformationsquelleAutor Jony Kale | 2013-04-02
Du musst angemeldet sein, um einen Kommentar abzugeben.
Aus:
$admin
ist der TypPDOStatament
was ist eine Klasse und nicht ein array. Daher können Sie nicht, rufen Sie die[]
Betreiber.Außerdem sollte man wirklich nicht immer zuordnen
$admin
den return-Ergebnis von jeder Methode, weil die meisten derPDOStatament
's Methoden geben Boolesche Werte:Abrufen der
super_admin
Spalte aus deradmin
Tabelle, die Sie hinzufügen sollten (nach derexecute()
- Anweisung):welche aufgefüllt wird (hoffentlich, es hängt davon ab, was die Tabelle, schema)
$result['super_admin']
.Ich habe gerade ".$_SESSION['user']."'". $_SESSION['user']."' und es hat funktioniert.
Geist zu erklären, der nach unten abstimmen?
InformationsquelleAutor Shoe
versuchen Sie dies:
die wenn " admin ist ein fall zurück, wenn Sie Ihre Abfrage nicht wieder jede Zeile, so dass $admin[somefield] wird keine Fehlermeldung angezeigt
InformationsquelleAutor jerjer