###### tags: `php` `blog` `postgresql` # 使用 PDO 連上 postgresql PDO 可以幫助我們連線到資料庫,像是 mysql 跟 postgresql ,除此之外還可以使用 prepare 的語法,幫我們做檢查,以防 sql injection 的攻擊。 建議現在 php 操作資料庫使用 pdo ,不要再使用 mysql 跟 mysqli 這類的函數 ## 環境 ### 開啟 extension 在 php.ini 中找到 extension=pdo_pgsql 並把他取消註解 ``` ;extension=pdo_mysql ;extension=pdo_oci ;extension=pdo_odbc extension=pdo_pgsql ;extension=pdo_sqlite ;extension=pgsql ;extension=shmop ``` ## 連線 ```php= try { $pgConn = new PDO("pgsql:host=$host;port=$port;dbname=$dbname;", $user, $password); } catch (PDOException $e) { echo 'Database connection fails: ' . $e->getMessage() . '<br />'; exit; } ``` ## 操作 我們可以使用一般的 query 跟 prepare 兩種方法來做使用,如果牽扯到變數,建議使用 prepare ### Query ```php= // show database name $res = $pgConn->query("SELECT datname FROM pg_database;"); print_r($res->fetchAll()); ``` ### Prepare ```php= // show database name $datname = "postgres"; $stmt = $pgConn->prepare("SELECT datname FROM pg_database where datname = :datname;"); $stmt->bindParam(":datname", $datname); $stmt->execute(); print_r($stmt->fetchAll()); ``` ## Reference [PostgreSQL Tutorial](https://www.postgresqltutorial.com/)
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up