Ich bin neu in PHP und ich versuche, eine Abfrage zu tun. Ich habe eine Funktion getUser
thats alle Benutzer aus der Benutzertabelle ausgewählt.Uncaught PDOException: Spalte existiert nicht
function getUsers() {
global $conn;
$query = $conn->prepare("SELECT * FROM user ORDER BY userid DESC");
$query->execute();
return $query->fetchAll();
}
Ich habe gehört, dass es Fall empfindlich sein kann, damit ich alle meine Attribute geändert Fall zu senken, um Probleme zu vermeiden, aber die Abfrage jede Spalte nicht finden können, was auch immer der Name.
Das ist mein PDO-Verbindung, die Fehler verbindet und die Berichterstattung nicht:
session_set_cookie_params(3600, '/~lbaw1641/proto/');
session_start();
$BASE_DIR = '/home/luiscosta/PhpstormProjects/LBAW-FEUP/';
$BASE_URL = 'LBAW-FEUP/';
//Connect to the database
try {
$dbuser = 'luiscosta';
$dbpass = '123';
$host = 'localhost';
$dbname = 'lbaw';
$conn = new PDO("pgsql:host=$host;dbname=$dbname", $dbuser, $dbpass);
}catch (PDOException $e) {
echo "Error : " . $e->getMessage() . "<br/>";
die();
}
$conn->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
Hier ist mein Fehler-Trace:
#0 /home/luiscosta/PhpstormProjects/LBAW-FEUP/database/users.php(15): PDOStatement->execute()
#1 /home/luiscosta/PhpstormProjects/LBAW-FEUP/controller/pages/top_scored_users.php(6): getUsers()
#2 {main}
thrown in /home/luiscosta/PhpstormProjects/LBAW-FEUP/database/users.php on line 15
Und meine user
Tabelle DDL, die, wie Sie alle sehen können hat der Attribute in Kleinbuchstaben:
CREATE TABLE "user"
(
userid INTEGER DEFAULT nextval('user_userid_seq'::regclass) PRIMARY KEY NOT NULL,
username VARCHAR(50) NOT NULL,
email VARCHAR(70) NOT NULL,
password VARCHAR(50) NOT NULL,
fullname VARCHAR(200),
about VARCHAR(500),
website VARCHAR(150),
signup_date DATE DEFAULT ('now'::text)::date NOT NULL,
last_login TIMESTAMP,
locationid INTEGER NOT NULL,
roleid INTEGER NOT NULL,
CONSTRAINT "FK_user_location" FOREIGN KEY (locationid) REFERENCES location (locationid),
CONSTRAINT "FK_user_userRole" FOREIGN KEY (roleid) REFERENCES "userRole" (roleid)
);
Haben Sie eine y Idee was ist los? Da ich neu bin, gibt es einen besseren Weg zu debuggen und zu überprüfen, ob meine DB-Verbindung läuft und läuft?
Ich glaube, Benutzer ist ein reserviertes Wort. Versuchen Sie "SELECT * FROM \ 'Benutzer \' ORDER BY Benutzer-ID DESC ". Wenn es funktioniert, google "mysql backticks" – bassxzero
@bassxzero Benutzer ist ein Schlüsselwort, aber kein reserviertes Wort. Entschuldigung, ich habe Unrecht. Ich wusste nicht, dass dies zuerst postgresql war. Es ist in postgresql reserviert, –
So etwas wie 'lbaw.user' –