WEB制作 | memo-memo Skip to content

memo-memo

web制作に便利そうな情報をメモるブログ

Archive

Category: WEB制作

まずは、MySQLにログインして、使用するDBを選択する

今回は、「title_id」、「title」、「pages」という3つ列からなる、booksという名前のテーブルを作ってみる。

コマンドプロンプトで、下記の様に入力。

データの型は、「title_id」がINT、「title」がVARCHAR、「pages」がINT。

「title_id」は、空の状態を許可しないNOT NULLと、勝手にキーが生成される様に、AUTO_INCREMENTが付いている。

「title」は、150文字まで格納可能な、(150)が付いている。

PRIMARY KEYは、title_idを指定している。

その他のオプションや、データ型については、追々。

テーブルの列について確認するには、、DESCRIBEを使用する。

DESCRIBE テーブル名;

使用してみたのが、下記の画像。

で、次はデータの追加の仕方。

データを追加するには、INSERTコマンドをしようする。

title_idが1、titleがRomeo and Juliet、pagesが500のデータを追加してみると、下記の様になる。

INSERT INTO books VALUES(1,"Romeo ant Juliet",500);

コマンドプロンプトで入力したのが、下記の画像。

列名を指定して追加する方法は、追々。

コマンドプロンプトで、全ての権限を持っているユーザを作成する方法。

まず、MySQLにログインする

GRANT構文を使用する。

GRANT ALL PRIVILEGES ON データベース.オブジェクト TO ‘ユーザ名’@'ホスト名’ IDENTIFIED BY ‘パスワード’;

実際に、ユーザー名「hoge」、パスワード「memo」を作成してみる。

権限については、こちらに書いてありました。

追々色々試してみよう。

コマンドプロンプトを使って、MySQLを操作する方法のメモ。

まず、MySQLにログインする方法。

今回は、ローカルにxamppをダウンロードしているので、ダウンロードされたファイルの、mysql.exeまでのパスをコマンドプロンプトで入力する。

構文としては、

mysql -h ホスト名 -u ユーザ名 -p

「-h ホスト名」は省略可能。

そうすると、Enter password:と表示されるので、パスワードを入力すれば、ログイン出来る。今回は、パスワードを設定していないので、そのままEnter。

そうすると、下の画像の様に表示される。

ちなみに、一番最初にコマンドプロンプトを開くと、

C:\Documents and Settings\ユーザー名>

になっているので、

C:\Documents and Settings\ユーザー名>cd\

こんな感じに、cd\を付けてやると、

C:\>

となる。cdは、カレントディレクトリの事らしい。詳しくはこちら

この状態で、

SHOW DATABASES;

と入力すると、利用可能なデータベースが表示される。

ちなみに、phpMyAdminを見てみると、

こうなっている。若干書かれている順番は違うけど、同じ物。

新しく、phpという名前のデータベースを作りたい場合、CREATE DATABASEコマンドを実行する。

CREATE DATABASE php;

この中で、どのデータベースを利用するかを選択する。例えば、上の画像にある、storeというデータベースを使いたい場合。

USE store;

と入力する。そうすると、下の画像の様に表示される。

これで、storeというデータベースが使用出来る。

配列のインデックスや、値を使って、一気に変数を定義するには、extract関数を使う。

<?php
$shapes = array(
'Sodacan' => 'Cylinder',
'Notepad' => 'Rectangle',
'Apple' => 'Sphere',
'Orange' => 'Sphere',
'Phonebook' => 'Rectangle'
);
extract($shapes);
//ここで、$Sodacan,$Notepad,$Apple,$Orange,$Phonebookがセットされる。
echo $Apple;
echo "<br />";
echo $Notepad;
?>

これをブラウザで表示させると、

Sphere
Rectangle

こうなる。

ただ、このままだと、連想配列でしか変数を作れない。

数値インデックスだと、変数0とか、変数1とかになってしまう。変数名の頭に数字は使えないので、

数値インデックスの配列をextract関数で変数にしたい時は、パラメーターを追加して、

接頭辞を付ける必要がある。

<?php
$shapes = array(
'Cylinder',
'Rectangle'
);
extract($shapes,EXTR_PREFIX_ALL,"shapes");
echo "shapes_0 is $shapes_0.<br />";
echo "shapes_1 is $shapes_1.";
?>

上記をブラウザで表示させれば、

shapes_0 is Cylinder.
shapes_1 is Rectangle.

が表示される。

赤字の、EXTR_PREFIX_ALLは、全ての変数に接頭辞を付けるって事。

青字のshapesは、接頭辞。

EXTR_PREFIX_ALL以外のパラメーターは、こちらを参照

多次元配列とは、配列の要素の中に配列が入っている状態。

配列が、多重に成っている配列を言う。

で、その定義の仕方は、配列の定義の記事で書いたarrayを多重にすれば良い。

$objects = array('Soda can'   => array('Shape'    => 'Cylinder',
                                       'Color'    => 'Red',
                                       'Material' => 'Metal'),
                 'Notepad'    => array('Shape'    => 'Rectangle',
                                       'Color'    => 'White',
                                       'Material' => 'Paper'),
                 'Apple'      => array('Shape'    => 'Sphere',
                                       'Color'    => 'Red',
                                       'Material' => 'Fruit'),
                 'Orange'     => array('Shape'    => 'Sphere',
                                       'Color'    => 'Orange',
                                       'Material' => 'Fruit'),
                 'Phonebook'  => array('Shape'    => 'Rectangle',
                                       'Color'    => 'Yellow',
                                       'Material' => 'Paper')
);

こんな感じ、まず一次元目に、「Soda can」、「Notepad」、「Apple」、「Orange」、「Phonebook」があって、

各々に、「Shape」、「Color」、「Material」が連想配列でくっついている(二次元目)。

で、この多次元の配列の出力は、下記の通り、

foreach ($objects as $obj_key => $obj){
 echo "$obj_key:<br />";
 while(list($key,$value) = each($obj)){
 echo "$key = $value ";
 }
 echo "<br />";
}

上記のコードをブラウザに表示させると、

Soda can:
Shape = Cylinder Color = Red Material = Metal
Notepad:
Shape = Rectangle Color = White Material = Paper
Apple:
Shape = Sphere Color = Red Material = Fruit
Orange:
Shape = Sphere Color = Orange Material = Fruit
Phonebook:
Shape = Rectangle Color = Yellow Material = Paper

こんな感じに出力される。

このコードは、サンプルをそのまま引っ張ってきたもので、当然サンプルだから、ちゃんと動くのだけど、

何故そうなるかの理解がまだいまいち…

赤文字のlist関数each関数の働きがちょっと微妙に解らなかったので、調べてみました。

list関数は、配列の値を、変数に一気に値を格納する働きがあるっぽい。下記は、こちらのページのサンプル。

<?php
$info = array('コーヒー', '茶色', 'カフェイン');
list($drink, $color, $power) = $info;
echo "$drink の色は $color で、$power が含まれています。";

?>

上記のコードを出力すると、

コーヒー の色は 茶色 で、カフェイン が含まれています。

となる。

「$drink」に「コーヒー」、「$color」に「茶色」、「$power」に「カフェイン」が各々格納されている。

一方each関数は、「配列から現在のキーと値のペアを返して、カーソルを進めます。」と書いてある。

 <?php
$foo = array("Robert" => "Bob", "Seppo" => "Sepi");
$bar = each($foo);
print_r($bar);
?> 

上記コードを出力すると、

Array
(
    [1] => Bob
    [value] => Bob
    [0] => Robert
    [key] => Robert
)
こんな感じに出力される。
[0]と[key]がキーで、[1]と[value]が値。
で、肝心の赤文字の意味ですが、
list($key,$value) = each($obj)という事は、
「変数$keyと$valueに配列each($obj)の値を格納している。」って事になる。
で、$keyと$valueをechoで出力している。while文の条件式に書かれているので、FALSEになるまで(最後まで)繰り返している。
うーん、この解釈で良いのだろうか???
オレオレ解釈…
each関数は、4つの要素を返すのに定義している変数が2つなのが、しっくりこない原因。
今度、詳しく調べてみよう。