Php/docs/mysqli.real-connect

提供:Dev Guides
< Php
移動先:案内検索

mysqli::real_connect

mysqli_real_connect

(PHP 5, PHP 7)

mysqli::real_connect -- mysqli_real_connectmysql サーバーとの接続をオープンする


説明

オブジェクト指向型

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() を実行する前にコールします。

参考