iOSアプリからPostgreSQLを使いmampにデータを送信した際のPHPエラーの件
開発初心者でございまして分かりにくい点があるかと存じますが、ご了承くださいませ。
「Objective-C」にて「AFNetworking3.0」のライブラリを活用して、サーバー上(MAMP)
にデータの送信を試みているのですが、MAMPのPHPエラーログに以下のようなエラーが発生致しております。「PostgreSQL」の経験が浅く、コードに不備があると思われますが、色々試しましたが、自力での解決ができませんでした。お分かりになる方、ご教授頂けますと幸いで御座います。宜しくお願い致します。
■エラー内容
[15-Aug-2018 06:54:52 UTC] PHP Warning: pg_connect(): Unable to connect to PostgreSQL server: invalid port number: "jiptsinfra016" in /Applications/MAMP/htdocs/DatabaseClass.php on line 3434行目のコードは以下ございます。(Databaseclass.php)
30行目 $this->link=pg_connect($this->dbServer,
31行目 $this->dbUser,
32行目 $this->dbPass,
33行目 $this->link,
34行目 $this->dbName
35行目 )
■Databaseclass.php(サーバー上にアップしたファイル1)
//内部文字コードを変更
mb_language("uni");
mb_internal_encoding("utf-8");
mb_http_input("auto");
mb_http_output("utf-8");
class Database{
var $dbServer;
var $dbName;
var $dbUser;
var $dbPass;
var $link;
var $db;
var $query;
//DB接続
function __construct($db_name)
{
//DBの情報
$this->dbServer="localhost";
$this->dbName=$db_name;
$this->dbUser="root";
$this->dbPass="root";
//ポスグレに接続
$this->link=pg_connect($this->dbServer,
$this->dbUser,
$this->dbPass,
$this->link,
$this->dbName
)
or
die(exit);
//UTF-8の文字コードに変更
$this->query=pg_query($this->link,'SET NAMES utf8');
}
//DBを閉じる
public function close()
{
return pg_close($this->link);
}
//読み込むテーブルの選択
public function select($query)
{
$result=pg_query($query);
$row=array();
$row=pg_fetch_assoc($result);
return $row;
}
//指定したクエリの実行
public function query($query)
{
return pg_query($this->link,$query);
}
//JSON形式に変換用の出力
public function jsonparse($query)
{
$row = pg_fetch_object($query);
return $row;
}
}
?>
■send_request.php(サーバー上にアップしたファイル2)
<?php
//DatabaseClassを読み込み
include_once "DatabaseClass.php";
//テーブル名と追加する値が選択されているかどうか確認
if($_POST["table_name"] && $_POST["addtext1"]
&& $_POST["addtext2"] && $_POST["addtext3"])
{
//DB名設定
$table_name = $_POST["table_name"];
$addtext1 = $_POST["addtext1"];
$addtext2 = $_POST["addtext2"];
$addtext3 = $_POST["addtext3"];
$database = new Database("test");
//データ追加用SQL
$sql = "INSERT INTO {$table_name} (field_A,field_B,field_C) VALUES
('{$addtext1}','{$addtext2}','{$addtext3}');";
//クエリ送信
$query = $database->query($sql);
//一応結果を出力用SQL
$sql = ("SELECT * FROM {$table_name}");
//クエリ送信
$query = $database->query($sql);
$json= array();
if(strstr($table_name, 'test_json')){
while ($row = pg_fetch_object($query)) {
$json[] = array(
'field_A'=> $row->field_A
,'field_B'=> $row->field_B
,'field_C' => $row->field_C
);
}
}//if(strstr($table_name, 'test_json'))
//JSON形式で出力
header("Content-Type: application/json; charset=utf-8");
echo json_encode($json);
//DBを閉じる
$database->close();
}//if($_POST["table_name"])
?>
■Objective-C(こちらのソースは問題ないように思えます)
- (void)send_request
{
AFHTTPSessionManager* manager = [AFHTTPSessionManager manager];
NSDictionary* postparam = @{ @"table_name" : @"test_json",
@"addtext1" : @"add_A",
@"addtext2" : @"add_B",
@"addtext3" : @"add_C"};
[manager POST:@"http://localhost:8888/send_request.php"
parameters:postparam progress:nil
success:^(NSURLSessionTask* task, id responseObject) {
//通信成功
NSLog(@"成功response: %@", responseObject);
}
failure:^(NSURLSessionTask* operation, NSError* error) {
//通信失敗
NSLog(@"失敗Error: %@", error);
}];
}
■補足情報
データベース名:test
テーブル名:test_json
フィールド1:field_A
フィールド2:field_B
フィールド3:field_C
Apache/2.4.6 (MSMP)
PHP/5.6.30
PostgreSQL 10.5