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」を使用します。
die or exit
関数内容 |
PHPを終了させます。 dieとexitは同等の機能になっています。 |
引数の型 |
説明 |
文字列 |
終了時に表示したい文字列 |
数値型 |
終了ステータスで値は0 ~ 254まで設定可能 0は正常終了 |
文字化け対策
DBから取得したデータが文字化けすることがあります。
その対策の1つとして接続したらDBの文字コードを変更する
「set_charset」関数があるので、文字化けしたら文字コードを変えてみてください。
set_charset
関数内容 |
引数で指定した文字コードに変更します。 成功したらtrue、失敗したらfalseが返ります。 |
戻り値 |
bool型で変更結果が返る(trueが成功) |
例
$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
関数内容 |
DBへの接続を閉じます。 成功したらtrue、失敗したらfalseを返します。 |
戻り値 |
切断結果がboolで返る(成功はtrue) |
例
$db = new mysqli("localhost", "root", "password", "test_db");
if ($db->connect_error)
{
die("DBに接続失敗しました");
}
$db->close();
query
DBに対してクエリを発行してテーブルにアクセスするには「query」を使います。
query
関数内容 |
queryにクエリの文字列を指定することでdbのテーブルにアクセスできます。 アクセスに成功した場合、SELECT、SHOW、DESCRIBE、EXPLAINのクエリだった場合 mysqli_resultオブジェクトが返り、その他クエリではtrueが返ります。 失敗した場合はfalseが返るようになっています。 |
戻り値 |
失敗はfalse固定 成功はクエリの内容でtrueかmysqli_resultが返る |
引数の型 |
説明 |
string |
MySqlで使用するクエリコマンド |
例
$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
関数内容 |
結果で得られたレコードを1つずつ連想配列の形式で取得します。 取得するレコードがない場合はnullが返ります。 |
戻り値 |
取得結果 レコードがある => array レコードがない => null |
終了
結果で取得したデータを扱い終わったらきちんとデータの解放を行います。
解放関数は「free」「close」「free_result 」がありますが、
全て同じ結果になります。
free or close or free_result
関数内容 |
mysqli_resultを解放します。 |
mysqli_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);