MYSQL関連

■接続

MySQLへの接続は「mysqli」を使用します。
このmysqliには手続き型として接続を行うmysqli_connect関数と
オブジェクト指向型として接続を行うmysqliクラスを使用する方法があります。
今回はオブジェクト指向型の説明をします。

●接続方法
	接続はmysqliをインスタンス化することで行います。
	接続のための情報はコンストラクタの引数で指定することになっています。
	
	・引数
		第一引数:
			ホスト名 (IPでも可)

		第二引数:
			ユーザー名

		第三引数:
			パスワード

		第四引数:
			データベース名

	・例
		$db = new mysqli("localhost", "root", "password", "test_db");

●成否判定
	データベースをの接続の成否は「connect_error」を使用します。
	エラーが発生していた場合、エラー内容を返す文字列を返し、
	エラーが発生しなかった場合はNULLを返します。

	・例
		$db = new mysqli("localhost", "root", "password", "test_db");

		if ($db->connect_error)
		{
			die("DBに接続失敗しました");
		}

	・die or exit
		DB接続が失敗したなどでPHPを終了させたい時は「die」か「exit」を使用します。
		この二つはPHPを終了させる関数です。

		関数名:
			die or exit

		戻り値:
			なし

		引数:
			文字列:
				終了時に表示したい文字列

			数値:
				終了ステータス
					0 ~ 254まで設定可能
					0は正常終了

		内容:
			PHPを終了させます。
			dieとexitは同等です。
●文字化け対策
	DBから取得したデータが文字化けすることがあります。
	その対策の1つとして接続したらDBの文字コードを変更する
	「set_charset」がありますので、文字化けしたら文字コードを変えてみてください。

	・関数仕様
		関数名:
			set_charset

		戻り値:
			bool
				true:成功
				false:失敗

		引数:
			string
				文字コード

		内容:
			引数で指定した文字コードに変更します。
			成功したらtrue、失敗したらfalseが返ります。

	・例
		$host_name = "localhost";
		$user_name = "root";
		$password = "";
		$db_name = "test_db";

		$db = new mysqli($host_name, $user_name, $password, $db_name);

		if ($db->connect_error)
		{
			die("DBに接続失敗しました");
		} else {
			printf("接続に成功しました。");

			// 文字コード設定
			$db->set_charset("utf8");
		}

		$db->close();

■切断

DBのに対しての処理が終了したら、きちんと接続を閉じる必要があります。
接続を閉じるには「close」を使用します。

●関数仕様
	関数名:
		close

	戻り値:
		bool
			切断成功 => true
			切断失敗 => false

	引数:
		なし

	内容:
		DBへの接続を閉じます。
		成功したらtrue、失敗したらfalseを返します。

●例
	$db = new mysqli("localhost", "root", "password", "test_db");

	if ($db->connect_error)
	{
		die("DBに接続失敗しました");
	}

	$db->close();

■query

DBに対してクエリを発行してテーブルにアクセスするには「query」を使います。

●関数仕様
	関数名:
		query

	戻り値:
		成功:
			 SELECT、SHOW、DESCRIBE、EXPLAINをクエリで設定した場合
				mysqli_resultオブジェクト

			その他
				true

		失敗:
			false

	引数:
		string
			クエリ

	内容:
		queryにクエリの文字列を指定することでdbのテーブルにアクセスできます。
		アクセスに成功した場合、SELECT、SHOW、DESCRIBE、EXPLAINのクエリだった場合
		mysqli_resultオブジェクトが返り、その他クエリではtrueが返ります。
		失敗した場合はfalseが返るようになっています。

●例
	$host_name = "localhost";
	$user_name = "root";
	$password = "";
	$db_name = "test_db";

	$db = new mysqli($host_name, $user_name, $password, $db_name);

	if ($db->connect_error)
	{
		die("DBに接続失敗しました");
	} else {
		printf("接続に成功しました。");
		// 文字コード設定
		$db->set_charset("utf8");
	}

	// user_dataの情報を全て持ってくる
	$sql = "SELECT * FROM user_data";

	// クエリ発行
	$result = $db->query($sql);

	// 結果チェック
	if ($result != null)
	{
		while ($row = $result->fetch_assoc())
		{
			print( $row["ID"] . $row["Name"] . "<br>");
		}

		$result->close();
	}

	$db->close();

●mysqli_resultオブジェクト
	mysqli_resultオブジェクトはデータベースへの送信したクエリ結果が格納されたデータです。
	上の例のfetch_assoc関数のように結果に関するデータを扱う関数が多数用意されています。

	・レコードの連想配列取得
		結果データで取得したレコードを連想配列として取得する関数として
		「fetch_assoc」があります。

		関数名:
			fetch_assoc

		戻り値:
			レコードがある => array
			レコードがない => null

		引数:
			なし

		内容:
			結果で得られたデータをレコードを1つずつ
			連想配列の形式で取得します。
			取得するレコードがない場合はnullが返ります。
		

	・終了
		結果で取得したデータを扱い終わったら
		きちんとデータの解放を行います。
		解放関数は「free」「close」「free_result 」がありますが、
		全て同じ効果です。

		関数名:
			free
			close
			free_result

		戻り値:
			なし

		引数:
			なし

		内容:
			結果データのメモリを解放します。

●挿入例
	$host_name = "localhost";
	$user_name = "root";
	$password = "";
	$db_name = "test_db";

	$db = new mysqli($host_name, $user_name, $password, $db_name);

	if ($db->connect_error)
	{
		die("DBに接続失敗しました");
	} else {
		printf("接続に成功しました。");
		// 文字コード設定
		$db->set_charset("utf8");
	}

	// employeeにレコードを挿入する
	$sql = "INSERT INTO  employee (Name) VALUES ('山田太郎')";

	// クエリ発行
	$result = $db->query($sql);

	// 結果チェック
	if ($result == false)
	{
		echo "登録に失敗しました";
	}

	mysqli_close($db);