SSブログ

「phpMyAdmin」で「MariaDB」を操作する。 [MariaDB]

「phpMyAdmin」で「MariaDB」を操作する。

■「phpMyAdmin」でデータベースを作成。

       
http://192.168.0.66/phpmyadmin/ ←ログインする。
phpmyadmin_login.png

phpmyadmin_top_page.png 「データベース」をクリック。
phpmyadmin_make_database_page.png データベース名「phpbasic」に、照合順序「utf8_unicode_ci」に。「作成」クリック。
phpmyadmin_make_table_page.png 左に作成されたデータベース「phpbasic」を確認。テーブルを作成、名前「enquete」に。カラム数「4」に。「実行」をクリック。
phpmyadmin_make_tableconfig_page.png 図のように入力。「保存」をクリック。
phpmyadmin_make_tablecompletion_page.png データベース完成。
 26日、28日の記事と連動しています。  先日作成したPHPのアンケートプログラムをphpMyAdminを使用してMariaDBに連動させます。この練習は書籍にあったものを実践したものです。ありがとうございました。
 まずはブラウザからphpMyAdminにアクセスします。「データベース」をクリックすると作成ページに移動します。
 作成する「データベース名」と「照合順序」を入力し、「作成」します。
 作成する「テーブル名」と「カラム数」を入力し、「実行」します。
「code」フィールドは通し番号が入ります。同じ番号は使われません。同一人物が解答を繰り返しても追加されます。
 そのシステム内に一つしか無い番号と言うことで「ユニークコード」とも言われるとのこと。
「code」「nickname」「email」「goiken」これがカラム数が「4」の理由です。
 フィールド名はPHPプログラムに合わせて命名しました。
「データ型」各々のフィールドに入力するデータのタイプを初めに設定します。
「INT」は整数を表します。(文字ではないので「長さ/値」には入力しない)
「VARCHAR」は文字列を表します。最大数値を設定しました。
「インデックス」は索引という意味で設定することにより検索が早くなるとのこと。個々のフィールドを検索欄として使用するか決めるのがインデックスの設定です。
「PRIMARY」1枚のテーブルの中で1つのフィールドにしか設定できないインデックスです。このとき選ばれるのは「そのテーブルを代表するフィールドである」という意味から、日本語では「主キー(プライマリーキー)」と呼ばれます。
 主キーとなることができるフィールドはその中にダブりが発生せずに、常にユニークな値となる物に限ります。(つまりインデックスをPRIMARYに設定することができるということ)
 氏名などは同姓同名がありえるので、主キーになることができないのはよくわかるでしょう。

「A_I」(auto increment)チェックを入れておくとレコードが追加されるたびに自動で通し番号を付けてくれます。



■「phpMyAdmin」から「SQL文」を入力してみる。

       
phpmyadmin_sql_page.png
 データベース「phpbasic」をクリックし「SQL」タブをクリックし、SQL文を入力し「実行」する。
INSERT INTO enquete (nickname,email,goiken) VALUES ("bibo-roku","email","なななもはー")
phpmyadmin_sql_add_page.png  入力の確認。
phpmyadmin_sql_check_page.png  テーブル「enquete」をクリックし「表示」タブをクリックし、確認する。
「SQL文」入力は補助機能があり便利でした。
 INSERT INTO enquete  ←アンケートテーブルにレコードを追加します。
 (nickname,email,goiken) ←[1],[2],[3]
 VALUES
  ("bibo-roku","email","なななもはー") ←["1"],["2"],["3"] ↑の数値と対応します。「nickname=bibo-roku」という具合。
 フィールド「code」はautoincrementなので自動で入力されるため手動では入力不要です。
「編集」をクリックすることでデータの編集もできます。



■「PHP」で「SQL文」を入力させる。(アンケート内容を自動で保存させる。)

       
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>アンケートのサンクス</title>
</head>
<body>

<?php $dsn = 'mysql:dbname=phpbasic;host=localhost'; ←一文追記。 $user = 'root'; ←一文追記。 $password = 'maria'; ←一文追記。 $dbh = new PDO($dsn,$user,$password); ←一文追記。 $dbh->query('SET NAMES utf8'); ←一文追記。
$nickname=$_POST['nickname']; $email=$_POST['email']; $goiken=$_POST['goiken'];
$nickname=htmlspecialchars($nickname); $email=htmlspecialchars($email); $goiken=$_POST['goiken'];
print $nickname; print '様<br>'; print 'ご意見ありがとうございました。<br>'; print 'いただいたご意見『'; print $goiken; print '』<br>'; print $email; print 'にメールを送りましたのでご確認ください。';
$mail_sub='アンケートを受け付けました。'; $mail_body=$nickname."様へ\nアンケートご協力ありがとうございました。"; $mail_body=html_entity_decode($mail_body,ENT_QUOTES,"UTF-8"); $mail_head='From:xxx@xxx.co.jp'; mb_language('Japanese'); mb_internal_encoding("UTF-8"); mb_send_mail($email,$mail_sub,$mail_body,$mail_head); $sql = 'INSERT INTO enquete (nickname,email,goiken) VALUES("'.$nickname.'","'.$email.'","'.$goiken.'")'; ←一文追記。
$stmt = $dbh->prepare($sql); ←一文追記。
$stmt->execute(); ←一文追記。 $dbh = null; ←一文追記。
?> </body> </html>
 先日作成した「thanks.php」に「MariaDB」に書き込みをさせるプログラムを追記します。
 プログラムで「SQL文」を使用するときは「接続」「命令」「切断」の過程を踏む必要があります。

$dsn = 'mysql:dbname=phpbasic;host=localhost';
dsn →パラメータ。データソースネーム。データベースに接続するために 必要な情報が含まれます。 指定されたデータベースへの接続を表す PDO インスタンスを生成します。
mysql: →接頭辞
dbname →データベース名を指定します。
host →データベースサーバーが存在するホスト名を指定します。
$user = 'root';
$password = 'XXXXX';
$dbh = new PDO($dsn,$user,$password);
dbh →パラメータ。データベースハンドル。MariaDBへの接続。
$dbh->query('SET NAMES utf8');
→$dbh->query('命令実行するSQL文');
データベース管理システムに対する処理要求(問い合わせ)を文字列として表したもの。


$sql = 'INSERT INTO enquete (nickname,email,goiken) VALUES("'.$nickname.'","'.$email.'","'.$goiken.'")';
$sql →ここにSQL文を記述する。
INSERT INTO →テーブルにデータを追加する。
$stmt = $dbh->prepare($sql); →SQL文で命令を出す準備。
$stmt->execute(); →その命令を出す。

$dbh = null; →データベースから切断する。

 編集後、ブラウザからデータを入力してみる。スマホからも成功しました。

■「SQL文」でデータを取り出す。

       
「SQL文」を入力する。
phpmyadmin_sql_sentence.png
表示はされるが警告も同時に表示される。
phpmyadmin_sql_sentence2.png
       
      
「SQLタグ」をクリックします。
「SELECT goiken FROM enquete WHERE code=1」を入力します。そして「実行」をクリック。
SELECT goiken →「goiken」フィールドのデータをください。
FROM enquete →「enquete」テーブルから。
WHERE code=1 →「code=1」のデータを。
 上記の通り入力したのですが、書籍の通りの出力にはどうしてもなりませんでした。警告が出るのです。
「Current selection does not contain a unique column. Grid edit, checkbox, Edit, Copy and Delete features are not available.」  ネットで調べてもincrementにはチェックを入れているしちょっと解らない状態です。書籍でのPHPのバージョンなども異なりますのでその辺が原因かも知れません。
 ですが下記命令は書籍通り表示できました。
「SELECT * FROM enquete WHERE 1」
SELECT *  →全てのフィールドのデータをください。
FROM enquete  →「enquete」デーブルから。
WHERE 1 →無条件で全部。 「1」が無条件で全部。

 これで一応データの呼び出しはできましたね。


この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。