「PHPとデータベース - MySQL」の版間の差分
ナビゲーションに移動
検索に移動
180行目: | 180行目: | ||
== データベースの選択 == | == データベースの選択 == | ||
MySQLへ接続後、データベースを選択するには、<code> | MySQLへ接続後、データベースを選択するには、<code>mysqli_select_db</code>関数を使用する。<br> | ||
<br> | <br> | ||
bool | bool mysqli_select_db(mysqli link_identifier, string dbname) | ||
データベース名を指定して、アクティブなデータベースに設定する。 | データベース名を指定して、アクティブなデータベースに設定する。 | ||
それ以降に実行するmysqli_query関数は、全てアクティブなデータベース上で実行される。 | |||
link_identifierを指定しない場合は、直近に接続したリンクを指定したとみなされる。 | link_identifierを指定しない場合は、直近に接続したリンクを指定したとみなされる。 | ||
mysqli_select_db関数は、接続のデフォルトデータベースを変更する際にのみ使用する。 | |||
デフォルトデータベースは、mysqli_connect関数の第4引数でも指定できる。 | |||
引数: | 引数: | ||
link_identifier MySQLのリンクID | |||
database_name アクティブにするデータベース名 | database_name アクティブにするデータベース名 | ||
戻り値: | 戻り値: | ||
203行目: | 206行目: | ||
<syntaxhighlight lang="php"> | <syntaxhighlight lang="php"> | ||
<?php | <?php | ||
$link = | $link = mysqli_connect('localhost', 'user', 'pass', 'my_db'); | ||
if(!$link) | if(!$link) | ||
{ | { | ||
die('接続失敗です。'. | die('接続失敗です。'.mysqli_error()); | ||
} | } | ||
print('<p>接続に成功しました。</p>'); | print('<p>接続に成功しました。</p>'); | ||
$db_selected = | // 現在のデフォルトデータベース名を返す | ||
if($result = mysqli_query($link, "SELECT DATABASE()")) | |||
{ | |||
$row = mysqli_fetch_row($result); | |||
printf("Default database is %s.\n", $row[0]); | |||
mysqli_free_result($result); | |||
} | |||
// データベースをworldに変更する | |||
$db_selected = mysqli_select_db($link, "world"); | |||
if(!$db_selected) | if(!$db_selected) | ||
{ | { | ||
221行目: | 233行目: | ||
// ...MySQLに対するCRUD処理 | // ...MySQLに対するCRUD処理 | ||
$close_flag = | $close_flag = mysqli_close($link); | ||
if($close_flag) | if($close_flag) | ||
{ | { |
2021年3月7日 (日) 01:24時点における版
概要
PHPにおいて、MySQLへの接続とCRUDの手順を記載する。
MySQLの接続・切断
MySQLの接続
MySQLへ接続するには、mysqli_connect
関数を使用する。
resource mysqli_connect(string host, string username, string passwd, string dbname [, int port [, string socket ]]) MySQLサーバへ接続または再利用する。 引数: host 接続先のMySQLサーバを指定する。 <ホスト名またはIPアドレス>:<ポート番号>のように、ポート番号を指定することが可能であり、 ホスト名またはIPアドレスでは、:/path/to/socketのようにソケットへのパスを指定することも可能である。 <ホスト名またはIPアドレス>または<ホスト名またはIPアドレス>:<ポート番号>を指定する場合、 MySQLクライアントライブラリはそれをオーバーライドして、ローカルソケット(Windowsでは名前付きパイプ)に接続する。 username ユーザ名 password パスワード dbname 接続するデータベース名を指定する。 port 接続するMySQLサーバーのポート番号を指定する。 socket 使用するソケットを指定する。 戻り値: MySQLサーバへの接続オブジェクトを返す。
以下の例では、MySQLサーバへ接続している。
<?php
// データベースへの接続に必要な変数を指定
$host = 'localhost'; // 以下の指定方法も可能
// localhost:3307(ホスト名とポート番号)
// 127.0.0.1:3307(IPアドレスとポート番号)
// /tmp/mysql(ソケットのみ)
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
// 接続チェック
if(!$link)
{
die('データベースの接続に失敗しました。');
}
echo "データベースの接続に成功しました! \n";
// データベースの接続を閉じる
mysqli_close($link);
?>
MySQLの切断
MySQLへの接続を切断するには、mysqli_close
関数を使用する。
bool mysqli_close(mysqli link_identifier]) link_identifierが指すMySQLへの非持続的リンクを閉じる。 link_identifierを省略する場合、最後に開いたリンクが使用される。 持続的ではないリンクは、スクリプトの実行終了時に自動的に閉じるため、通常は、mysql_close関数は不要である。 引数: link_identifier mysqli_connect関数の戻り値のリンクIDを指定する。 戻り値: MySQLの切断に成功する場合はtrue、失敗する場合はfalseを返す。
以下の例では、MySQLへの接続を明示的に切断している。
$host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
// ...MySQLのCRUD処理
mysqli_close($link);
エラー処理
MySQLに対する処理でエラーが発生する場合、mysqli_error
関数を使用して、エラーメッセージを取得することができる。
string mysqli_error(mysqli link_identifier]) 直近のMySQL関数からのエラー文字列を返す。 MySQLのバックエンドのエラーは警告が発生しないため、 代わりに、mysqli_error関数を使用してエラー文字列を取得する。 引数: link_identifier MySQLのリンクID 戻り値: 直近のMySQL関数からのエラー文字列を返す。 エラーが発生していない場合は、空文字列を返す。
以下の例では、mysqli_connect関数でエラーが発生した場合にエラーメッセージを取得している。
$host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
if(!$link)
{
print(mysqli_error());
}
// ...MySQLに対するCRUD処理
mysqli_close($link);
MySQLの接続に失敗する場合、その後のMySQLに対する処理を実行できないため、
exit関数またはdie関数を使用して、プログラムを終了する。
exit関数およびdie関数の詳細は、PHPの基礎 - PHPの終了処理を参照すること。
$host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
if(!$link)
{
die('接続失敗です。'.mysqli_error());
}
// ...MySQLに対するCRUD処理
mysqli_close($link);
以下の例では、MySQLの接続と切断を実行している。
<?php
$host = 'localhost';
$username = 'root';
$passwd = 'root';
$dbname = 'mydb';
// データベースへ接続
$link = mysqli_connect($host, $username, $passwd, $dbname);
if(!$link)
{
die('接続失敗です。'.mysqli_error());
}
print('<p>接続に成功しました。</p>');
// ...MySQLに対するCRUD処理
$close_flag = mysqli_close($link);
if($close_flag)
{
print('<p>切断に成功しました。</p>');
}
?>
データベースの選択
MySQLへ接続後、データベースを選択するには、mysqli_select_db
関数を使用する。
bool mysqli_select_db(mysqli link_identifier, string dbname) データベース名を指定して、アクティブなデータベースに設定する。 それ以降に実行するmysqli_query関数は、全てアクティブなデータベース上で実行される。 link_identifierを指定しない場合は、直近に接続したリンクを指定したとみなされる。 mysqli_select_db関数は、接続のデフォルトデータベースを変更する際にのみ使用する。 デフォルトデータベースは、mysqli_connect関数の第4引数でも指定できる。 引数: link_identifier MySQLのリンクID database_name アクティブにするデータベース名 戻り値: 成功した場合はtrue、失敗する場合はfalseを返す。
SELECT文等のクエリを発行する場合は、アクティブなデータベースに対して実行されるため、
クエリを発行する前に、データベース名を指定してデータベースを選択する必要がある。
また、存在しないデータベースを選択する場合、以下のようなエラーが表示される。
Access denied for user '<ユーザ名>'@'<ホスト名またはIPアドレス>' to databese '<データベース名>'
<?php
$link = mysqli_connect('localhost', 'user', 'pass', 'my_db');
if(!$link)
{
die('接続失敗です。'.mysqli_error());
}
print('<p>接続に成功しました。</p>');
// 現在のデフォルトデータベース名を返す
if($result = mysqli_query($link, "SELECT DATABASE()"))
{
$row = mysqli_fetch_row($result);
printf("Default database is %s.\n", $row[0]);
mysqli_free_result($result);
}
// データベースをworldに変更する
$db_selected = mysqli_select_db($link, "world");
if(!$db_selected)
{
die('データベース選択失敗です。'.mysql_error());
}
print('<p>uriageデータベースを選択しました。</p>');
// ...MySQLに対するCRUD処理
$close_flag = mysqli_close($link);
if($close_flag)
{
print('<p>切断に成功しました。</p>');
}
?>