mysqli::real_connect
mysqli_real_connect
(PHP 5, PHP 7)
mysqli::real_connect -- mysqli_real_connect — mysql サーバーとの接続をオープンする
説明
オブジェクト指向型
public mysqli::real_connect
([ string $host
[, string $username
[, string $passwd
[, string $dbname
[, int $port
[, string $socket
[, int $flags
]]]]]]] ) : bool
手続き型
mysqli_real_connect
( mysqli $link
[, string $host
[, string $username
[, string $passwd
[, string $dbname
[, int $port
[, string $socket
[, int $flags
]]]]]]] ) : bool
MySQL データベースエンジンとの接続を確立します。
この関数は、以下の点で mysqli_connect() とは異なります。
- mysqli_real_connect() は、 mysqli_init() が作成した接続オブジェクトを必要とします。
- mysqli_options() 関数を使用して、 さまざまな接続オプションを設定することが可能です。
flags
パラメータが使用できます。
パラメータ
link
手続き型のみ: mysqli_connect() あるいは mysqli_init() が返すリンク ID。
host
ホスト名あるいは IP アドレス。
null
値あるいは文字列 "localhost" をこのパラメータに指定すると、ローカルホストを使用します。 使用可能な場合は、TCP/IP プロトコルよりもパイプを優先して使用します。username
MySQL ユーザー名。
passwd
null
を指定した場合は、MySQL サーバーは パスワードを持たないユーザーレコードについてのみ認証を試みます。 これにより、同一のユーザー名に対して (パスワードが指定されたか 否かによって) 違う権限を与えることができます。dbname
指定した場合は、 クエリが行われるデフォルトのデータベースとなります。
port
MySQL サーバーに接続する際のポート番号を指定します。
socket
使用するソケットあるいは名前つきパイプを指定します。
注意:
socket
引数を指定しても、MySQL サーバーへの 接続時の型を明示的に定義することにはなりません。MySQL サーバーへの 接続方法についてはhost
引数で定義されます。flags
パラメータ
flags
で、接続時のさまざまなオプションを設定します。サポートするフラグ 名前 説明 MYSQLI_CLIENT_COMPRESS
圧縮プロトコルを使用します。 MYSQLI_CLIENT_FOUND_ROWS
変更された行数ではなく、マッチした行数を返します。 MYSQLI_CLIENT_IGNORE_SPACE
関数名に続く空白文字を許可します。すべての関数名を予約語とします。 MYSQLI_CLIENT_INTERACTIVE
接続を閉じるまでのタイムアウト時間として、 (
wait_timeout
のかわりに)interactive_timeout
の使用を許可します。MYSQLI_CLIENT_SSL
SSL (暗号化) を使用します。 MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT
MYSQLI_CLIENT_SSL
と似ていますが、SSL 証明書の検証は行いません。 これは、MySQL Native Driver と MySQL 5.6 以降の組み合わせでのみ使えます。
注意:
セキュリティの観点から、PHP では
MULTI_STATEMENT
フラグはサポートされていません。複数のクエリを実行したい場合は、 mysqli_multi_query() 関数を使用してください。
変更履歴
バージョン | 説明 |
---|---|
5.6.16 | MySQL Native Driver 用の MYSQLI_CLIENT_SSL_DONT_VERIFY_SERVER_CERT フラグが追加されました。
|
返り値
成功した場合に true
を、失敗した場合に false
を返します。
例
例1 mysqli::real_connect() の例
オブジェクト指向型
<?php$mysqli = mysqli_init();if (!$mysqli) { die('mysqli_init failed');}if (!$mysqli->options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) { die('Setting MYSQLI_INIT_COMMAND failed');}if (!$mysqli->options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');}if (!$mysqli->real_connect('localhost', 'my_user', 'my_password', 'my_db')) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());}echo 'Success... ' . $mysqli->host_info . "\n";$mysqli->close();?>
オブジェクト指向型 で mysqli クラスを継承する例
<?phpclass foo_mysqli extends mysqli { public function __construct($host, $user, $pass, $db) { parent::init(); if (!parent::options(MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) { die('Setting MYSQLI_INIT_COMMAND failed'); } if (!parent::options(MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed'); } if (!parent::real_connect($host, $user, $pass, $db)) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error()); } }}$db = new foo_mysqli('localhost', 'my_user', 'my_password', 'my_db');echo 'Success... ' . $db->host_info . "\n";$db->close();?>
手続き型
<?php$link = mysqli_init();if (!$link) { die('mysqli_init failed');}if (!mysqli_options($link, MYSQLI_INIT_COMMAND, 'SET AUTOCOMMIT = 0')) { die('Setting MYSQLI_INIT_COMMAND failed');}if (!mysqli_options($link, MYSQLI_OPT_CONNECT_TIMEOUT, 5)) { die('Setting MYSQLI_OPT_CONNECT_TIMEOUT failed');}if (!mysqli_real_connect($link, 'localhost', 'my_user', 'my_password', 'my_db')) { die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());}echo 'Success... ' . mysqli_get_host_info($link) . "\n";mysqli_close($link);?>
上の例の出力は以下となります。
Success... MySQL host info: localhost via TCP/IP
注意
注意:
MySQLnd は常に、サーバーのデフォルト文字セットを想定しています。この文字セットは接続時の ハンドシェイク/認証 のときに送信され、これを mysqlnd が使います。
Libmysqlclient が使うデフォルトの文字セットは
my.cnf
で設定したものです。あるいは明示的に mysqli_options() をコールして設定することもできます。 これは、mysqli_init() のあとで mysqli_real_connect() を実行する前にコールします。
参考
- mysqli_connect() - mysqli::__construct のエイリアス
- mysqli_init() - MySQLi を初期化し、mysqli_real_connect() で使うオブジェクトを返す
- mysqli_options() - オプションを設定する
- mysqli_ssl_set() - SSL を使用したセキュアな接続を確立する
- mysqli_close() - 事前にオープンしているデータベース接続を閉じる