ConoHa+PHP+mysqlデータベース構築

mysql
スポンサーリンク

ConoHaWINGデータベース作成

以前DockerでPHP+MySQL環境構築をしましたが

Docker + PHP + MySQL開発環境
Docker + PHP + MySQL開発環境 mysql環境の追加 前回のcgidocker環境をdbdockerにコピーしてmysqlデータベースを追加していきます。 ファイル構成 dbdocker ├──db │  ├─...

レンタルサーバーのConoHaWINGのmysqlデータベースをPHPで使って見ました。

データベース作成

①サイト管理をクリック
②データベースをクリック
③+データベースをクリック

データベス名」:半角英数字と_で14文字以内
「mydb」とした場合PHPからのアクセスは「dbn_mydb」の様に決められている部分も含めてdbname=dbn_mydb」とします。

ネームタグ」:複数運用する際の管理用でデータベース名と同じでOK

「保存」をクリック

データベースができます。
登録したネームタグをクリック

PHPから呼び出す時「データベース名」と「接続先ホスト」が必要になります。メモしておいてください。

ユーザー作成

①「+ユーザー」をクリック
②「ユーザー名」を入力 半角英数1~14文字
③「パスワード」を入力 半角英数記号組み合わせ8~70文字
④「接続先データベース」上で作ったデータベースネームタグを選択
⑤「保存」をクリック

ユーザーが出来るのでユーザー名をクリック
ユーザー名とパスワードはPHPから接続に必要です。メモしておいてください。

FTPアカウント作成

①サイト管理
②FTPをクリック
③+FTPアカウントをクリック
④FTPユーザー名を入力
⑤FTPパスワードを入力
⑥保存をクリック

出来たFTPアカウントをクリック
ユーザー名、パスワード、FTPサーバーが必要になりますのでメモしておいてください。

FFFTPの設定

FFFTP設定

FFFTPをインストールして

①接続をクリック
②ホストの設定をクリック

①新規ホストをクリック
②ホストの設定名:ホスト一覧表示される管理用
③ホスト名:FTPサーバー名
④ユーザー名:FTPユーザー名
⑤パスワード:FTPパスワード
⑥ローカル初期フォルダ:PCローカル側フォルダ
⑦ホストの初期フォルダ:/public_html
または、/public_html/yourdomain.com
yourdomain.comは貴方の取得しているドメインに変更して下さい。

接続

①「B」をクリック:バイナリーモードで送信
②接続(コンセントマーク)をクリック
③接続先を確認して接続をクリック
yourdomain.comダブルクリックyourdomain.comは貴方の取得しているドメイン。

ConoHaWINGのレンタルサーバーのPHP関連情報を知りたいのでPHPInfoを表示してみましょう。

index.php

<?php phpinfo();
①バイナリモードをクリック
②アップロードするファイルを選択
③上矢印をクリック
④アップロード終了
⑤切断(コンセントバツマーク)

同じファイルが有る場合は確認ウィンドウが表示されます。「新しければ上書き」を選択して「OK」
アップロードするファイルが複数有る場合は「以降全て」をクリック
ブラウザアドレスにyourdomain.comでアクセス
mysqli.default_port 3306
PDO drivers mysql
を確認してください。

PHPからデータベースへアクセス

ホスト名、データベース名、ユーザー名、パスワードの部分だけ変更すれば使えると思います。

テーブル作成

create.php

<?php
try {
 $hostname = "host_name";
 $dbname = "db_name";
 $username = "user_name";
 $pass ="user_pass";

 $dsn = 'mysql:host=' . $hostname .';dbname=' . $dbname . ';port=3306; charset=utf8mb4';
 $opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
 $db = new PDO($dsn, $username, $pass, $opt);

 $sql = 'CREATE TABLE IF NOT EXISTS user (
 id INT(5) AUTO_INCREMENT PRIMARY KEY,
 name VARCHAR(30), age INT(3)
 )';
 //$res = $db->query($sql);
 $res = $db->exec($sql);
 echo "テーブル作成OK!";
} catch (PDOException $e) {
 echo $e->getMessage();
 exit;
}
$db = null;
$hostname = “host_name“;
$dbname = “db_name“;
$username = “user_name“;
$pass =”user_pass“;
自分の環境に合わせて設定して下さい。
$opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
$db = new PDO($dsn, $username, $pass, $opt);
ハマっている人も多いと思いますがPDOでINT型がSTRING型に変換されてしまう
このオプション設定をする事により回避出来ます。

レコード作成

insert.php

<?php try {
 $hostname = "host_name";
 $dbname = "db_name";
 $username = "user_name";
 $pass ="user_pass";
 
 $dsn = 'mysql:host=' . $hostname .';dbname=' . $dbname . ';port=3306; charset=utf8mb4';
 $opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
 $db = new PDO($dsn, $username, $pass, $opt);
   
 $sql = 'INSERT INTO user(name,age) VALUES ("大谷","26")';
 //$res = $db->query($sql);
 $res = $db->exec($sql);
 echo "レコード入力OK!";
} catch (PDOException $e) {
 echo $e->getMessage();
 exit;
}
$db = null;

セレクト検索

select.php

<?php try {
 $hostname = "host_name";
 $dbname = "db_name";
 $username = "user_name";
 $pass ="user_pass";
 
 $dsn = 'mysql:host=' . $hostname .';dbname=' . $dbname . ';port=3306; charset=utf8mb4';
 $opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
 $db = new PDO($dsn, $username, $pass, $opt);

 $sql = 'SELECT * FROM user';
 $dat = $db->query($sql);
 if( !empty($dat) ) {
  foreach( $dat as $val ) {
   var_dump($val['id']);
   var_dump($val['name']);
   var_dump($val['age']);
  }
 }
} catch (PDOException $e) {
 echo $e->getMessage();
 exit;
}
$db = null;

アップデート更新

update.php

<?php try {
 $hostname = "host_name";
 $dbname = "db_name";
 $username = "user_name";
 $pass ="user_pass";
 
 $dsn = 'mysql:host=' . $hostname .';dbname=' . $dbname . ';port=3306; charset=utf8mb4';
 $opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
 $db = new PDO($dsn, $username, $pass, $opt);

 $sql = 'UPDATE user SET age = age + 1';
 //$res = $db->query($sql);
 $res = $db->exec($sql);
 echo "アップデート入力OK!";
} catch (PDOException $e) {
 echo $e->getMessage();
 exit;
}
$db = null;
UPDATEされない時が有る。
最近のレンタルサーバーは、高速化のためキャッシュを使ってます。
そのため、上手くUPDATEされない事が起こります。
ConoHaでは動的サイト(PHP)はキャッシュしない様に設定する事により回避出来ます。
①サイト管理をクリック
②サイト設定をクリック
③応用設定をクリック
④鉛筆マークをクリック
⑤ON(静的コンテンツのみ)を選択して保存

レコードの削除

delete.php

<?php try {
 $hostname = "host_name";
 $dbname = "db_name";
 $username = "user_name";
 $pass ="user_pass";
 
 $dsn = 'mysql:host=' . $hostname .';dbname=' . $dbname . ';port=3306; charset=utf8mb4';
 $opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
 $db = new PDO($dsn, $username, $pass, $opt);

 $sql = "DELETE FROM user WHERE id = 1";
 //$res = $db->query($sql);
 $res = $db->exec($sql);
 echo "レコード削除OK!";
} catch (PDOException $e) {
 echo $e->getMessage();
 exit;
}
$db = null;

テーブルの削除

drop.php

<?php try {
 $hostname = "host_name";
 $dbname = "db_name";
 $username = "user_name";
 $pass ="user_pass";
 
 $dsn = 'mysql:host=' . $hostname .';dbname=' . $dbname . ';port=3306; charset=utf8mb4';
 $opt = [ PDO::ATTR_EMULATE_PREPARES=>false ];
 $db = new PDO($dsn, $username, $pass, $opt);

 $sql = 'DROP TABLE IF EXISTS user';
 //$res = $db->query($sql);
 $res = $db->exec($sql);
 echo "テーブル削除OK!";
} catch (PDOException $e) {
 echo $e->getMessage();
 exit;
}
$db = null;

まとめ

MySQLでINT型がSTRING型になってしまったり、UPDATEされない等の時は

PHPでPDOでデータベースを使う場合
PDO::ATTR_EMULATE_PREPARES=>falseにする。

レンタルサーバーを使う場合
キャッシュ機能をチェックする。

タイトルとURLをコピーしました