質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

Q&A

解決済

4回答

6175閲覧

PHPとPostgreSQLを連携させたい。

settyan

総合スコア60

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Apache

Apacheは、Apache HTTP Serverの略で、最も人気の高いWebサーバソフトウェアの一つです。安定性が高いオープンソースソフトウェアとして商用サイトから自宅サーバまで、多くのプラットフォーム向けに開発・配布されています。サーバーソフトウェアの不具合(NCSA httpd)を修正するパッチ(a patch)を集積、一つ独立したソフトウェアとして開発されました。

PHP

PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

0グッド

0クリップ

投稿2016/06/20 07:04

編集2016/06/20 07:09

###前提・実現したいこと
題名の通りです。
下記のコードで動かしているのですが、DBNULLが返ってきてしまいます。
DBの指定文なんですが
localhostではよく見るんですが、path指定のものはあまりみかけなくて...

今のサーバ周りを説明いたしますと...
DBサーバ:win8.1の上にpostgresを乗っけている。
APIサーバ:win8.1の上にApach2.4を立ててそこで稼動

今現在この2つのサーバーは同じPC上に乗っているんですが、将来的には分けるつもりなのでできればPATHを指定したいのですが、、、。

できないのであればlocalhostでもいいのですが、この場合localhostでいけるのでしょうか?

ご教授の程よろしくお願いします。

###該当のソースコード

PHP

1<?php 2//Typeの設定 3header("Content-Type:applicasion/json"); 4//iosファイルの取得 5$iosfile = file_get_contents('php://input'); 6//入れ子の生成 7$jsonArray = NULL; 8//iosファイルのNULLチェック 9if(!empty($iosfile)){ 10 11//データのデコード 12 $jsonArray = json_decode($iosfile); 13}else{ // 値が取れていない場合 14 //リターンステータスの生成 15 $resultArray=array("LoginState"=>"BOTHNULL","resultCode"=>"99"); 16 echo json_encode($resultArray); 17 exit();//------------------------------------------------------------------- 18} 19 20//中身のどちらかがNULLの場合 21 22if( empty($jsonArray->loginID) || empty($jsonArray->password)){ 23 //リターンステータスの生成 24 $resultArray=array("LoginState"=>"ONCENULL","resultCode"=>"99"); 25 echo json_encode($resultArray); 26 exit();//------------------------------------------------------------------- 27 28} 29 30 31//DB接続設定 32$db = 'pgsql:dbname=EMPLOYEEMASTER host=jdbc:postgresql://255.255.255.255. port=9999'; 33try{ 34 //接続 35 $link = new PDO($db,'USER','PASS'); 36 $link = setAttribute(PDO::ATTR_EMULATE_PREPARES,false); 37}catch(PDOException $error){ 38 //リターンステータスの生成 39 print_r($error); 40 $resultArray=array("LoginState"=>"DBNULL","resultCode"=>"99"); 41 echo json_encode($resultArray); 42 exit();//------------------------------------------------------------------- 43} 44 45//sql生成 46$sql = 'SELECT * FROM login WHERE loginid = ? AND pass = ?'; 47 48 49//実行準備をして、文を返す 50$stmt = $link->prepare($sql); 51//値の設定(?に入る値) 52$value = array($jsonArray['loginID'],$jsonArray['password']); 53//sql実行 54$flag = $stmt->execute($value); 55//実行したsqlを作成 56$mDO = outputSQL($sql,$value); 57 58//実行判断 59if(!$flag){ 60 //リターンステータスの生成 61 $resultArray=array("LoginState"=>"NG","resultCode"=>"99"); 62 echo json_encode($resultArray); 63 exit();//------------------------------------------------------------------- 64} 65 66$result = $stmt -> fetch(PDO::FETCH_ASSOC); 67 $resultArray=array("LoginState"=>"OK","resultCode"=>"99"); 68 echo json_encode($resultArray); 69exit();//------------------------------------------------------------------- 70 71?>

###エラーコード
エラーコードを表示させた結果次の様になりました。
PDOException Object
(
[message:protected] => could not find driver
[string:Exception:private] =>
[code:protected] => 0
[file:protected] =>
[line:protected] => 46
[trace:Exception:private] => Array
(
[0] => Array
(
[file] =>
[line] => 46
[function] => __construct
[class] => PDO
[type] => ->
[args] => Array
(
[0] => pgsql:dbname=EMPLOYEEMASTER host=jdbc:postgresql://255.255.255.255 port=9999
[1] => USER
[2] => PASS
)

) ) [previous:Exception:private] => [errorInfo] =>

)

###試したこと
pathの中身を色々と替えてみたりしましたがだめでした。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

エラーメッセージにcould not find driverとありますが、ここにあるようなインストールは行いましたか?
http://php.net/manual/ja/ref.pdo-pgsql.php

###追記
http://php.net/manual/ja/pdo.installation.php
Windows ユーザーのあたりを確認してください。

投稿2016/06/20 07:15

編集2016/06/20 07:53
masaya_ohashi

総合スコア9206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

settyan

2016/06/20 07:33

php -i で情報を見てみた結果 PDO support => enabled PDO drivers => のようになっていました。 これはやはりドライバーがないということですよね。。。
settyan

2016/06/20 07:59

dllに関してはpostgresに関するものは全部有効化してあります。 二三回再起動しているんですがダウンロードされないんですよね...
guest

0

色々と思い違いされている様な気がしますが、
まずはサンプルコード等にある通りのlocalhostとデフォルトのポートで接続できるようにして、
別サーバに分けるタイミングで指定方法を改めて確認されるのがいいかと思いますよ。

変更するにしても接続部分だけですから。

投稿2016/06/20 07:20

tanat

総合スコア18709

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

接続文字列は以下ではダメでしょうか?

TEXT

1pgsql:dbname=EMPLOYEEMASTER;host=192.168.1.11;port=5432

また、エラーはcould not find driverになっているため、
PHPを動かすホスト上のphp.iniで次の行は有効になっていますか?

php.ini

1php_pdo_pgsql.dll

投稿2016/06/20 07:19

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

settyan

2016/06/20 07:45

dllは有効なっていました。 ただphp -i で情報を見てみた結果 PDO support => enabled PDO drivers => no のようになっていました。
guest

0

自己解決

色々と試行錯誤やサイトを見てみた結果、現在のphpのバージョンではできないらしいので、versionを落としてもう一度試みるかPDOを使用しない方法で行いたいと思います。皆様ありがとうございました。

投稿2016/06/20 08:45

settyan

総合スコア60

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問