iOSアプリからサーバ上のDBにデータを送信した際のPHPエラーの件
開発初心者の質問で分かりにくい点が多々あるかと存じますが、ご了承くださいませ。
「Objective-C」にて「AFNetworking3.0」のライブラリを活用して、サーバー上(MAMP)
にデータの送信を試みているのですが、MAMPのPHPエラーログに以下のようなエラーが発生致しております。1週間ほどかけ色々と修正を試みましたが、解消されませんでした。沢山エラーが発生しており、申し訳ございません。お分かりになる方、ご教授頂けますと幸いで御座います。宜しくお願い致します。
■エラー内容1
PHP Deprecated: Methods with the same name as their class will not be constructors in a future version of PHP; Database has a deprecated constructor in /Applications/MAMP/htdocs/DatabaseClass.php on line 10■10行目のコードは以下です。
class Database{■エラー内容2
PHP Warning:mysqli_select_db() expects parameter 1 to be mysqli, string given in /Applications/MAMP/htdocs/DatabaseClass.php on line 37■37行目のコードは以下です。
$this->db=mysqli_select_db($this->dbName,$this->link);■エラー内容3
PHP Warning: mysqli_query() expects parameter 1 to be mysqli, string given in /Applications/MAMP/htdocs/DatabaseClass.php on line 40■40行目のコードは以下です。
$this->query=mysqli_query('SET NAMES utf8',$this->link);■エラー内容4
PHP Warning: mysqli_query() expects at least 2 parameters, 1 given in /Applications/MAMP/htdocs/DatabaseClass.php on line 61■61行目のコードは以下です。
return mysqli_query($query);■エラー内容5
PHP Warning: mysqli_fetch_object() expects parameter 1 to be mysqli_result, null given in /Applications/MAMP/htdocs/send_request.php on line 32■32行目のコードは以下です。
while ($row = mysqli_fetch_object($query)) {
■send_request.php(サーバー上にアップしたファイル1)
<?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 = mysqli_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"])
?>
■Databaseclass.php(サーバー上にアップしたファイル2)
<?php
//内部文字コードを変更
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 Database($db_name)
{
//DBの情報
$this->dbServer="localhost:8889";
$this->dbName=$db_name;
$this->dbUser="root";
$this->dbPass="XXXX";
//MySQLに接続
$this->link=mysqli_connect($this->dbServer,
$this->dbUser,
$this->dbPass)
or
die(exit);
//DBを選択
$this->db=mysqli_select_db($this->dbName,$this->link);
//UTF-8の文字コードに変更
$this->query=mysqli_query('SET NAMES utf8',$this->link);
}
//DBを閉じる
public function close()
{
return mysqli_close($this->link);
}
//読み込むテーブルの選択
public function select($query)
{
$result=mysqli_query($query);
$row=array();
$row=mysqli_fetch_assoc($result);
return $row;
}
//指定したクエリの実行
public function query($query)
{
return mysqli_query($query);
}
//JSON形式に変換用の出力
public function jsonparse($query)
{
$row = mysqli_fetch_object($query);
return $row;
}
}
?>
■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/7.2.77
MySQL 5.7.21