データベースMySQL関数(サーバー接続・終了/DB選択)
- mysql_connect〔MySQL接続を開く〕
- mysql_pconnect〔MySQLサーバーへの持続的な接続を開く〕
- mysql_ping〔サーバーとの接続状況を調べ、接続されていない場合は再接続する〕
- mysql_select_db〔データベース選択〕
- mysql_close〔MySQL接続を閉じる〕
mysql_connect
MySQL接続を開く
unknown
MySQLサーバーへ接続を開きます。あるいは再利用します。
成功した場合にMySQLの接続ID、失敗した場合にFALSEを返します。
失敗した場合にエラーメッセージが表示されないようにするには、@mysql_connect();
のように、関数名の頭にエラー演算子(@)を付けます。
オプション引数を省略した場合は、以下のデフォルト値が使用されます。
オプション引数 | デフォルト値 |
---|---|
サーバー | 'localhost:host:3306' |
ユーザー名 | サーバプロセスの所有ユーザー名 |
パスワード | 空のパスワード('') |
オプションの第1引数サーバーには、MySQLサーバーを指定します。 "hostname:port" のようにポート番号も指定可能です。 localhostの場合、ソケットへのパス ";/path/to/socket" も指定可能です。
同じ引数で2回この関数がコールされた場合、2回目は新しい接続が確立されるのではなく、既にオープンされた接続IDが返ります。 オプションの第4引数new_link(PHP4.2.0~)にTRUEを指定すれば、新しい接続が確立されます。
オプションの第5引数client_flags(PHP4.3.0~)には以下の定数の組合せを指定します。
定数 | 説明 |
---|---|
MYSQL_CLIENT_SSL | SSL による暗号化を使用 |
MySQL_CLIENT_COMPREESS | 圧縮プロトコルを使用する |
MYSQL_CLIENT_IGNORE_SPACE | 関数名の後ろのスペースを許可する |
MYSQL_CLIENT_INTERACTIVE | interactive_timeoutで指定された秒数の無通信が続くまで接続を閉じない |
MySQLサーバーへの接続は、スクリプトの実行終了時と同時に閉じられるので、mysql_close()関数で明示的に閉じる必要はありません。
<?
#サーバー名で接続する場合
/* MySQL接続開始 */
$dbc=@mysql_connect("localhost","root","");
if(!$dbc){
die("MySQL接続失敗: ".mysql_error());
}
/* MySQL接続終了(自動的に閉じられるので省略可)*/
mysql_close($dbc);
?>
<?
#hostname:port構文の使用例(mydomain.com のポート 3306 に接続する場合)
/* MySQL接続開始 */
$dbc=mysql_connect("mydomain.com:3306","root","");
if(!$dbc){
die("MySQL接続失敗: ".mysql_error());
}
/* MySQL接続終了(自動的に閉じられるので省略可)*/
mysql_close($dbc);
?>
<?
#localhost のポート 3306 に接続する場合
$dbc=mysql_connect("localhost:3306", "root","");
if(!$dbc){
die("MySQL接続失敗: ".mysql_error());
}
/* MySQL接続終了(自動的に閉じられるので省略可)*/
mysql_close($dbc);
?>
mysql_pconnect
MySQLサーバーへの持続的な接続を開く
unknown
MySQLサーバーへの持続的な接続を開きます。
成功した場合に持続的な接続ID、失敗した場合にFALSEを返します。
失敗した場合にエラーメッセージが表示されないようにするには、@mysql_pconnect();
のように、関数名の頭にエラー演算子(@)を付けます。
mysql_connect()関数と動作は似ていますが、2つの相違点があります。
-
この関数は接続時に同じホスト、ユーザー名、パスワードを有する持続的な接続が、既に開かれているかどうか調べます。 見つかった場合には、新しく接続を開かず、既に開かれている接続IDが返されます。
-
スクリプトの実行が終了してもMySQLサーバーとの接続は閉じられません! 将来再利用されるために、接続が開かれたままになります。 この接続は、mysql_close()関数で閉じる事はできません。
オプションの第1引数サーバーには、MySQLサーバーを指定します。
"hostname:port"
のようにポート番号も指定可能です。
localhostの場合、ソケットへのパス";/path/to/socket"
も指定可能です。
オプションの第2引数ユーザー名のデフォルト値は、サーバープロセスの所有ユーザー名になります。
オプションの第3引数パスワードのデフォルト値は、空のパスワードです。
オプションの第4引数client_flagsには以下の定数の組合せを指定します。
定数 | 説明 |
---|---|
MYSQL_CLIENT_SSL | SSL による暗号化を使用 |
MySQL_CLIENT_COMPREESS | 圧縮プロトコルを使用する |
MYSQL_CLIENT_IGNORE_SPACE | 関数名の後ろのスペースを許可する |
MYSQL_CLIENT_INTERACTIVE | interactive_timeoutで指定された秒数の無通信が続くまで接続を閉じない |
<?
/* MySQLサーバーへの持続的な接続 */
$dbc=mysql_pconnect("localhost","root","");
if(!$dbc){
die('MySQL接続失敗: '.mysql_error());
}
?>
mysql_ping
サーバーとの接続状況を調べ、接続されていない場合は再接続する
unknown
MySQLサーバーとの接続が有効かどうか調べます。接続されていない場合は、自動的に再接続されます。 有効な場合にTRUE、そうでない場合にFALSEを返します。
この関数はアイドル期間が長いスクリプトで、サーバーが接続を切断したかどうか、確認するために使います。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* MySQL接続開始 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗: ".mysql_error());
/* データベース選択 */
mysql_select_db("db_customer",$dbc) or die("データベース選択失敗: ".mysql_error());
/* 時間のかかるクエリと仮定 */
$sql1="SELECT * FROM tbl_customer";
$res1=mysql_query($sql1,$dbc) or die("1つ目のクエリ失敗: ".mysql_error());
/* MySQLサーバーの接続状況を調べる */
if(!mysql_ping($dbc)){
echo "1つ目のクエリ後、接続が切断されました。";
exit;
}
/* 結果保持用メモリ解放 */
mysql_free_result($res);
/* 接続が有効と確認されたため、別のクエリを実行 */
$sql2="SELECT * FROM table_sample2";
$res2=mysql_query($sql2) or die("2つ目のクエリ失敗: ".mysql_error());
?>
mysql_select_db
データベース選択
unknown
指定した接続IDが指すデータベースを選択します。
成功した場合にTRUE、失敗した場合にFALSEを返します。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
<?
/* MySQL接続開始 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗: ".mysql_error());
/* データベース選択 */
$db_selected=mysql_select_db("db_sample",$dbc);
if(!$db_selected){
die('データベース選択失敗: '.mysql_error());
}
/* クエリ送信 */
$sql="SELECT age FROM tbl_sample";
$res=mysql_query($sql,$dbc) or die("クエリ失敗: ".mysql_error());
while($dat=mysql_num_rows($res)){
echo $dat[0]."<br>";
}
?>
mysql_close
MySQL接続を閉じる
unknown
指定した接続IDが指すmysql_connect()関数により開かれた非持続的な接続を閉じます。 成功した場合にTRUE、失敗した場合にFALSEを返します。
オプションの第1引数接続IDが指定されていない場合は、mysql_connect()関数により直近に開かれた接続が使用されます。 接続が確立されていない場合は、引数を指定せずmysql_connect()関数がコールされた時と同様に接続を確立します。 それでも接続が確立できない場合は、E_WARNINGレベルのエラーが発生します。
- mysql_pconnect()関数で開かれた持続的な接続は、この関数では閉じられません。
- 非持続的接続(mysql_connect()関数で開かれた接続)はスクリプト実行終了時に自動的に閉じられるので、この関数を使って明示的に閉じる必要はありません。
<?
/* MySQL接続開始 */
$dbc=mysql_connect("localhost","root","") or die("MySQL接続失敗: ".mysql_error());
/* ・・・処理・・・ */
/* MySQL接続終了(自動的に閉じられるため省略可)*/
mysql_close($dbc);
?>