Help us understand the problem. What is going on with this article?

Azure WebApp + PHP + MySQL さいしょの一歩

More than 1 year has passed since last update.

FNCT創造工学演習、予備実験向けにハンズオンを作成しました。

WebApp作成

スクリーンショット 2018-04-24 10.24.03.png
Microsoft Azureポータルにログインして、+リソースの作成から検索窓にMySQLをタイプし、Web App + MySQLを選択、作成ボタンをクリックする。

スクリーンショット 2018-04-24 10.26.38.png
アプリ名・リソースグループを適切に入力し、データベース プロバイダーにMySQL in Appを選択しておく。これで、Web Appインスタンス内にMySQLサーバも構築される。
App Serviceプランで適切なプランを選択しておくことを忘れずに。

App Service Editorを開く

スクリーンショット 2018-04-24 0.22.29.png
WebAppメニューを下にスクロールして、App Service Editor移動をクリックし、App Service Editor(ブラウザ内開発環境)を開いておく。

ソース記述

index.php
<html>
<body>
    hello
</body>
</html>

確認のために、上記ファイルを作成してみる。
PHPプログラムは記述していないが、ブラウザ上にはhelloと表示されるはず。

MySQLに接続

index.php
<?php
    $azure_mysql_connstr = $_SERVER["MYSQLCONNSTR_localdb"];

    $azure_mysql_connstr_match = preg_match(
      "/".
        "Database=(?<database>.+);".
        "Data Source=(?<datasource>.+);".
        "User Id=(?<userid>.+);".
        "Password=(?<password>.+)".
      "/u",
      $azure_mysql_connstr,
      $_);        

    $link = mysql_connect($_["datasource"], $_["userid"], $_["password"], $_["database"]);
    if ($link) {
        print("connected!");

        mysql_close($link);
    }
    else {
        print(mysql_error());
    }
?>

index.phpを書き換えて、上記コードを実行してみる。
問題なくMySQLに接続できれば、connected!と表示される。

テーブルの準備

スクリーンショット 2018-04-24 10.48.48.png
AzureポータルのWebApp設定メニューから、MySQL in Appを選択し、管理をクリックする。

スクリーンショット 2018-04-24 10.59.03.png
MySQLを使ったことのある人にはおなじみ、phpMyAdminが表示される。

スクリーンショット 2018-04-24 11.00.59.png
標準でデータベースlocaldbを使うようになっているので、そこで列数1のAccessというテーブルを作成する。
画面のように入力して、Goボタンをクリック。

スクリーンショット 2018-04-24 11.03.08.png
NameにAccessTime、TypeにDATETIMEを入力して、Saveボタンをクリック。

これでテーブルAccessが作成された。
保存されるデータは、アクセス時刻という想定。

アクセス時刻を保存する

ふたたびApp Service Editorにもどって、アクセス時刻を保存するコードを書いてみる。

index.php
if ($link) {
    //アクセス時刻を保存する
    $db_selected = mysql_select_db($_["database"], $link);

    $sql = "INSERT INTO Access (AccessTime) VALUES ('2018-04-17 11:59')";
    $result_flag = mysql_query($sql);

    if ($result_flag) {
        echo "成功しました";
    } else {
        die('INSERTクエリーが失敗しました。'.mysql_error());
    }           

    mysql_close($link);
}

MySQL接続が成功したif ($link)の中身を、上記のように書き換える。
上記コードでは、アクセス時刻といいながら固定値を保存しているので、現在時刻を保存できるように書き換えていただきたい。

再びindex.phpにアクセスし成功しましたと表示されればひとまずOK。

スクリーンショット 2018-04-24 11.08.33.png
phpMyAdminのほうを確認すれば、今insertした行が確認できる。

テーブルの内容を取得する

index.php
$result = mysql_query('SELECT count(*) as count from Access');  
$row = mysql_fetch_assoc($result);
print("アクセス数: ". $row["count"]);  

insertした後あたりに、上記コードを追加してみる。
SELECT count(*) as count from AccessというSQLを実行し、結果を表示することで、アクセス数が分かるようになる。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away