ConoHaWINGデータベース作成
以前DockerでPHP+MySQL環境構築をしましたが
404 NOT FOUND | Best-LifeUP
レンタルサーバーのConoHaWINGのmysqlデータベースをPHPで使って見ました。
データベース作成
①サイト管理をクリック
②データベースをクリック
③+データベースをクリック
②データベースをクリック
③+データベースをクリック
「データベス名」:半角英数字と_で14文字以内
「mydb」とした場合PHPからのアクセスは「dbn_mydb」の様に決められている部分も含めて「dbname=dbn_mydb」とします。
「ネームタグ」:複数運用する際の管理用でデータベース名と同じでOK
「保存」をクリック
データベースができます。
登録したネームタグをクリック
登録したネームタグをクリック
PHPから呼び出す時「データベース名」と「接続先ホスト」が必要になります。メモしておいてください。
ユーザー作成
①「+ユーザー」をクリック
②「ユーザー名」を入力 半角英数1~14文字
③「パスワード」を入力 半角英数記号組み合わせ8~70文字
④「接続先データベース」上で作ったデータベースネームタグを選択
⑤「保存」をクリック
②「ユーザー名」を入力 半角英数1~14文字
③「パスワード」を入力 半角英数記号組み合わせ8~70文字
④「接続先データベース」上で作ったデータベースネームタグを選択
⑤「保存」をクリック
ユーザーが出来るのでユーザー名をクリック
ユーザー名とパスワードはPHPから接続に必要です。メモしておいてください。
ユーザー名とパスワードはPHPから接続に必要です。メモしておいてください。
FTPアカウント作成
①サイト管理
②FTPをクリック
③+FTPアカウントをクリック
④FTPユーザー名を入力
⑤FTPパスワードを入力
⑥保存をクリック
②FTPをクリック
③+FTPアカウントをクリック
④FTPユーザー名を入力
⑤FTPパスワードを入力
⑥保存をクリック
出来たFTPアカウントをクリック
ユーザー名、パスワード、FTPサーバーが必要になりますのでメモしておいてください。
ユーザー名、パスワード、FTPサーバーが必要になりますのでメモしておいてください。
FFFTPの設定
FFFTP設定
①接続をクリック
②ホストの設定をクリック
②ホストの設定をクリック
①新規ホストをクリック
②ホストの設定名:ホスト一覧表示される管理用
③ホスト名:FTPサーバー名
④ユーザー名:FTPユーザー名
⑤パスワード:FTPパスワード
⑥ローカル初期フォルダ:PCローカル側フォルダ
⑦ホストの初期フォルダ:/public_html
または、/public_html/yourdomain.com
yourdomain.comは貴方の取得しているドメインに変更して下さい。
②ホストの設定名:ホスト一覧表示される管理用
③ホスト名: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
を確認してください。
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にする。
レンタルサーバーを使う場合
・キャッシュ機能をチェックする。