「phpMyAdmin」で「MariaDB」を操作する。 [MariaDB]
■「phpMyAdmin」でデータベースを作成。
|
まずはブラウザからphpMyAdminにアクセスします。「データベース」をクリックすると作成ページに移動します。
作成する「データベース名」と「照合順序」を入力し、「作成」します。
作成する「テーブル名」と「カラム数」を入力し、「実行」します。
「code」フィールドは通し番号が入ります。同じ番号は使われません。同一人物が解答を繰り返しても追加されます。
そのシステム内に一つしか無い番号と言うことで「ユニークコード」とも言われるとのこと。
「code」「nickname」「email」「goiken」これがカラム数が「4」の理由です。
フィールド名はPHPプログラムに合わせて命名しました。
「データ型」各々のフィールドに入力するデータのタイプを初めに設定します。
「INT」は整数を表します。(文字ではないので「長さ/値」には入力しない)
「VARCHAR」は文字列を表します。最大数値を設定しました。
「インデックス」は索引という意味で設定することにより検索が早くなるとのこと。個々のフィールドを検索欄として使用するか決めるのがインデックスの設定です。
「PRIMARY」1枚のテーブルの中で1つのフィールドにしか設定できないインデックスです。このとき選ばれるのは「そのテーブルを代表するフィールドである」という意味から、日本語では「主キー(プライマリーキー)」と呼ばれます。
主キーとなることができるフィールドはその中にダブりが発生せずに、常にユニークな値となる物に限ります。(つまりインデックスをPRIMARYに設定することができるということ)
氏名などは同姓同名がありえるので、主キーになることができないのはよくわかるでしょう。
「A_I」(auto increment)チェックを入れておくとレコードが追加されるたびに自動で通し番号を付けてくれます。
■「phpMyAdmin」から「SQL文」を入力してみる。
|
INSERT INTO enquete ←アンケートテーブルにレコードを追加します。
(nickname,email,goiken) ←[1],[2],[3]
VALUES
("bibo-roku","email","なななもはー") ←["1"],["2"],["3"] ↑の数値と対応します。「nickname=bibo-roku」という具合。
フィールド「code」はautoincrementなので自動で入力されるため手動では入力不要です。
「編集」をクリックすることでデータの編集もできます。
■「PHP」で「SQL文」を入力させる。(アンケート内容を自動で保存させる。)
|
プログラムで「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文」でデータを取り出す。
|
「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」が無条件で全部。
これで一応データの呼び出しはできましたね。