Php/docs/mysqli.construct

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

mysqli::__construct

mysqli::connect

mysqli_connect

(PHP 5, PHP 7)

mysqli::__construct -- mysqli::connect -- mysqli_connect新規に MySQL サーバーへの接続をオープンする


説明

オブジェクト指向型

public mysqli::__construct ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] )

public mysqli::connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] ) : void

手続き型

mysqli_connect ([ string $host = ini_get("mysqli.default_host") [, string $username = ini_get("mysqli.default_user") [, string $passwd = ini_get("mysqli.default_pw") [, string $dbname = "" [, int $port = ini_get("mysqli.default_port") [, string $socket = ini_get("mysqli.default_socket") ]]]]]] ) : mysqli|false

MySQL サーバーへの接続をオープンします。


パラメータ

host

ホスト名または IP アドレスです。この引数に null または "localhost" を渡すと ローカルホストとみなされます。もし可能な場合、TCP/IP プロトコルの代わりに パイプが使用されます。

ホストの前に p: をつけると、持続的な接続を開きます。 接続プールから開いた接続上で mysqli_change_user() が自動的にコールされます。

username

MySQL のユーザー名。

passwd

省略したり null を渡したりした場合、MySQL サーバーは パスワードを持たないユーザーレコードについてのみ認証を試みます。 これによってひとつのユーザー名において(パスワードが指定されたか 否かによって)違うパーミッションを与えることができます。

dbname

指定した場合は、 クエリが行われるデフォルトのデータベースとなります。

port

MySQL サーバーに接続する際のポート番号を指定します。

socket

使用するソケットあるいは名前つきパイプを指定します。

注意:

socket 引数を指定しても、MySQL サーバーへの 接続時の型を明示的に定義することにはなりません。MySQL サーバーへの 接続方法については host 引数で定義されます。


返り値

MySQL サーバーへの接続を表すオブジェクトを返します。 失敗した場合に false を返します


例1 mysqli::__construct() の例

オブジェクト指向型


<?php$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');/* * これは "公式な" オブジェクト指向のやりかたですが、 * PHP 5.2.9 および 5.3.0 より前のバージョンでは $connect_error は動作していませんでした */if ($mysqli->connect_error) {    die('Connect Error (' . $mysqli->connect_errno . ') '            . $mysqli->connect_error);}/* * PHP 5.2.9 および 5.3.0 より前のバージョンとの互換性を保ちたい場合は * $connect_error のかわりにこのようにします */if (mysqli_connect_error()) {    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::__construct($host, $user, $pass, $db);        if (mysqli_connect_error()) {            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_connect('localhost', 'my_user', 'my_password', 'my_db');if (!$link) {    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_error() 関数あるいは mysqli->connect_error プロパティを使用しましょう。

注意:

接続タイムアウトなどのオプションを設定する必要がある場合は、かわりに mysqli_real_connect() を使わなければなりません。

注意:

コンストラクタをパラメータなしでコールするのは、 mysqli_init() をコールするのと同じ意味になります。

注意:

エラー "Can't create TCP/IP socket (10106)" が発生するのは、たいていは variables_order 設定ディレクティブに E が含まれていない場合です。 Windows では、これが含まれていなければ SYSTEMROOT 環境変数が使用できず、PHP が Winsock の読み込みに失敗します。

参考