mysqli->connect_error
mysqli::debug
MySQLi
PHP Manual

# mysqli::__construct

# mysqli_connect

(PHP 5)

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

### 説明

オブジェクト指向型

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") ]]]]]] )

手続き型

mysqli 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") ]]]]]] )

実行中の 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 サーバへの接続を表すオブジェクトを返します。

### 変更履歴

バージョン | 説明
--- | ---
5.3.0 | 持続的な接続機能が追加されました。

### 例

例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 クラスを継承する例

`<?php
class 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

### 注意

> 注意: オブジェクト指向の構文に関する注意: 接続に失敗した場合にもオブジェクトが返されます。 接続が失敗したかどうかを確かめるには、先ほどの例のように 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 の読み込みに失敗します。

### 参考

- mysqli_real_connect() - mysql サーバとの接続をオープンする
- mysqli_options() - オプションを設定する
- mysqli_connect_errno() - 直近の接続コールに関するエラーコードを返す
- mysqli_connect_error() - 直近の接続エラーの内容を文字列で返す
- mysqli_close() - 事前にオープンしているデータベース接続を閉じる

mysqli->connect_error
mysqli::debug
MySQLi
PHP Manual