Qstairs

現役AIベンチャーCTOの知見、画像認識(人工知能、Deep Learning)を中心とした技術ノウハウをアップしていきます

広告

【PHP】MySQLとの接続(select,insert,update,delete)

f:id:qstairs:20160601221351j:plain:h300

こんばんは。

昨日あたりからPHPの勉強を始めたので、
備忘録としてまとめます。

今回は、PHPMySQLにアクセスする処理を実装しました。
MySQLの主要な機能のSELECT,INSERT,UPDATE,DELETEそれぞれをブラウザで実行できるようになってます。
#サーブレットMySQLにアクセスしたりしたことあるんですが、
#PHPだとこんなに簡単なんですね( ̄△ ̄;)

前提条件

phpapacheMySQLがインストール済みで動作保証されている。
phpでmysqliがつかるようになっている。
#これらはググれば出てくるので割愛します。



※ソース内のDBのパスワード、データベース名等、実行時の変数は動作環境に合わせてください。

SELECT

// 実行例
http://localhost/mysql_delete.php?table=tablename&tcol=id&tval=5
<?php
    $host          = 'localhost';//ホスト名
    $user_name     = 'root';     //ユーザー名
    $user_password = 'password';     //パスワード
    $database_name = 'dbname';     //データベース名
    $table_name = $_GET['table'];   // テーブル名
    $target_col = $_GET['tcol'];   // 対象のカラム
    $target_val = $_GET['tval'];   // 対象のカラムの値

    $mysqli = new mysqli($host, $user_name, $user_password);
    if ($mysqli->connect_errno) {
      print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error);
      exit();
    }
    $mysqli->select_db($database_name);
    $mysqli->set_charset("utf-8");
  
    $query="SELECT * FROM ".$table_name." WHERE ".$target_col." = ".$target_val;
    $result = $mysqli->query($query);
    if (!$result) {
        print('クエリーが失敗しました。' . $mysqli->error);
        $mysqli->close();
        exit();
    }
    
    // レコードの取り出し
    while ($row = $result->fetch_assoc()) {
        $userData[]=$row;
    //    echo json_encode($row);
    }
    header('Content-type: application/json');
    if($result->num_rows > 0){
        echo json_encode($userData);
    }else{
        echo "null";
    }
    // 結果セットのクローズ
    $result->free();

    $mysqli->close();
?> 

INSERT

// 実行例
http://localhost/mysql_insert.php?table=tablename&vals=(5,'sample',4)
<?php
    $host          = 'localhost';//ホスト名
    $user_name     = 'root';     //ユーザー名
    $user_password = 'password';     //パスワード
    $database_name = 'dbname';     //データベース名
    $table_name = $_GET['table'];   // テーブル名
    $insert_vals = $_GET['vals'];   // 追加する値
    
    $mysqli = new mysqli($host, $user_name, $user_password);
    if ($mysqli->connect_errno) {
      print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error);
      exit();
    }
    $mysqli->select_db($database_name);
    $mysqli->set_charset("utf-8");
    $query="INSERT INTO ".$table_name." VALUES".$insert_vals;   // 全カラムを指定する必要あり
    $result = $mysqli->query($query);
    if (!$result) {
        print('クエリーが失敗しました。' . $mysqli->error);
        $mysqli->close();
        exit();
    }else{
        echo "true";
    }

    $mysqli->close();
?> 

UPDATE

// 実行例
http://localhost/mysql_update.php?table=tablename&col=value&val=map&tcol=id&tval=5
<?php
    $host          = 'localhost';//ホスト名
    $user_name     = 'root';     //ユーザー名
    $user_password = 'password';     //パスワード
    $database_name = 'dbname';     //データベース名
    $table_name = $_GET['table'];   // テーブル名
    $update_col = $_GET['col'];   // 代入するカラム
    $update_val = $_GET['val'];   // 代入する値
    $target_col = $_GET['tcol'];   // 対象のカラム
    $target_val = $_GET['tval'];   // 対象のカラムの値

    $mysqli = new mysqli($host, $user_name, $user_password);
    if ($mysqli->connect_errno) {
      print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error);
      exit();
    }
    $mysqli->select_db($database_name);
    $mysqli->set_charset("utf-8");
    $query="UPDATE ".$table_name." SET ".$update_col." = '".$update_val."' WHERE ".$target_col." = ".$target_val;
    $result = $mysqli->query($query);
    if (!$result) {
        print('クエリーが失敗しました。' . $mysqli->error);
        $mysqli->close();
        exit();
    }else{
        echo "true";
    }

    $mysqli->close();
?> 

DELETE

// 実行例
http://localhost/mysql_delete.php?table=tablename&tcol=id&tval=5
<?php
    $host          = 'localhost';//ホスト名
    $user_name     = 'root';     //ユーザー名
    $user_password = 'password';     //パスワード
    $database_name = 'dbname';     //データベース名
    $table_name = $_GET['table'];   // テーブル名
    $target_col = $_GET['tcol'];   // 対象のカラム
    $target_val = $_GET['tval'];   // 対象のカラムの値

    $mysqli = new mysqli($host, $user_name, $user_password);
    if ($mysqli->connect_errno) {
      print('<p>データベースへの接続に失敗しました。</p>' . $mysqli->connect_error);
      exit();
    }
    $mysqli->select_db($database_name);
    $mysqli->set_charset("utf-8");
    $query="DELETE FROM ".$table_name." WHERE ".$target_col."=".$target_val;
    $result = $mysqli->query($query);
    if (!$result) {
        print('クエリーが失敗しました。' . $mysqli->error);
        $mysqli->close();
        exit();
    }else{
        echo "true";
    }

    $mysqli->close();
?> 
広告