私はPHPを初めて使い、クエリを実行しようとしています。私は関数を作ったgetUser
は、ユーザーテーブルからすべてのユーザーを選択します。未知PDOException:列が存在しません
function getUsers() {
global $conn;
$query = $conn->prepare("SELECT * FROM user ORDER BY userid DESC");
$query->execute();
return $query->fetchAll();
}
私はそれは大文字と小文字を区別することができることを聞いたので、私は問題を避けるために、小文字にすべての私の属性を変更しますが、クエリは名前が何であれ、任意の列を見つけることができません。
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);
はここに私のエラートレースです:
#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
そして、あなたが見ることができるようにすべて持っている私のuser
テーブルDDL、
これは、接続したすべてのエラーを報告していない私のPDO接続です小文字の属性:
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)
);
何が間違っていますか?私が新しくなったので、DB接続が稼動しているかどうかをデバッグして確認する良い方法がありますか? PostgreSQLの
私はuserが予約語だと思います。 "SELECT * FROM \' user \ 'ORDER BY userid DESC"を試してください。それがうまくいくならgoogle "mysql backticks" – bassxzero
@bassxzero userはキーワードですが予約語ではありません。申し訳ありません私が間違っています。私はこれが最初にpostgresqlであることを認識していませんでした。それはpostgresqlで予約されています、 –
'lbaw.user'のようなもの –