MySQL サーバーへの接続をオープンする

# mysql_connect

(PHP 4, PHP 5)

mysql_connect — MySQL サーバーへの接続をオープンする

警告

この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。 MySQLi あるいは PDO_MySQL を使うべきです。詳細な情報は MySQL: API の選択 を参照ください。 この関数の代替として、これらが使えます。

- mysqli_connect()
- PDO::__construct()

### 説明

function mysql_connect(
string `$server` = ini_get("mysql.default_host"),
string `$username` = ini_get("mysql.default_user"),
string `$password` = ini_get("mysql.default_password"),
bool `$new_link` = `false`,
int `$client_flags` = 0
): resource|false

MySQL サーバーへの接続をオープンあるいは再利用します。

### パラメータ

`server`
  MySQL サーバー。"hostname:port" のようにポート番号を 指定することが可能で、localhost では ":/path/to/socket" のようにソケットへのパスを指定することも可能です。 PHP ディレクティブ mysql.default_host が指定されない場合（デフォルト）、 'localhost:3306' が使用されます。 SQL セーフモード の場合はこのパラメータは無視され、常に 'localhost:3306' が用いられます。
`username`
  ユーザー名。デフォルト値は mysql.default_user で定義されている値です。SQL セーフモード の場合はこのパラメータは無視され、 サーバープロセスの所有ユーザー名が用いられます。
`password`
  パスワード。デフォルト値は mysql.default_password で定義されている値です。SQL セーフモード の場合はこのパラメータは無視され、 空のパスワードが用いられます。
`new_link`
  同じ引数で 2 回 mysql_connect() をコールした場合、 2 回目は新規のリンクが確立されるのではなく、代わりにすでにオープンされた リンクのリンク ID が返されます。 パラメータ `new_link` はこの動作を変更し、既に mysql_connect() が同じパラメータでコールされて いる場合でも常に新規のリンクがオープンされるようにします。 SQL セーフモード の場合はこのパラメータは無視されます。
`client_flags`
  パラメータ `client_flags` は、 以下の定数の組み合わせです： 128 (`LOAD DATA LOCAL` の処理を有効にする)、 `MYSQL_CLIENT_SSL`、 `MYSQL_CLIENT_COMPRESS`、 `MYSQL_CLIENT_IGNORE_SPACE` または `MYSQL_CLIENT_INTERACTIVE`。 詳細な情報については MySQL クライアント定数 を参照ください。 SQL セーフモード の場合はこのパラメータは無視されます。

### 戻り値

成功した場合に MySQL リンク ID を、失敗した場合に `false` を返します。

### 例

例1 mysql_connect() の例

    <?php
    $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('接続できませんでした: ' . mysql_error());
    }
    echo '接続に成功しました';
    mysql_close($link);
    ?>

例2 mysql_connect() で `hostname:port` 構文を使用する例

    <?php
    // example.com のポート 3307 に接続します
    $link = mysql_connect('example.com:3307', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('接続できませんでした: ' . mysql_error());
    }
    echo '接続に成功しました';
    mysql_close($link);

    // localhost のポート 3307 に接続します
    $link = mysql_connect('127.0.0.1:3307', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('接続できませんでした: ' . mysql_error());
    }
    echo '接続に成功しました';
    mysql_close($link);
    ?>

例3 mysql_connect() で ":/path/to/socket" 構文を使用する例

    <?php
    // localhost のソケット（例: /tmp/mysql.sock）に接続します

    // 方法 1: localhost を省略する
    $link = mysql_connect(':/tmp/mysql', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('接続できませんでした: ' . mysql_error());
    }
    echo '接続に成功しました';
    mysql_close($link);

    // 方法 2: localhost を指定する
    $link = mysql_connect('localhost:/tmp/mysql.sock', 'mysql_user', 'mysql_password');
    if (!$link) {
        die('接続できませんでした: ' . mysql_error());
    }
    echo '接続に成功しました';
    mysql_close($link);
    ?>

### 注意

> 注意: サーバー名に "localhost" や "localhost:port" を指定した場合、MySQL クライアントライブラリはそれをオーバーライドし、 ローカルソケット（Windows では名前つきパイプ）に接続しようとします。 TCP/IP を用いたい場合は、"localhost" のかわりに "127.0.0.1" を用いてください。もし MySQL クライアントライブラリが 間違ったローカルソケットへ接続しようとしている場合、これを修正するには php.ini の mysql.default_host に正しいパスを指定したうえでサーバー名を空白にしておくべきです。

> 注意: サーバーへのリンクは、mysql_close() のコールにより 明示的に閉じられない限り、スクリプトの実行終了と同時に閉じられます。

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

### 参考

- mysql_pconnect() - MySQL サーバーへの持続的な接続をオープンする
- mysql_close() - MySQL 接続を閉じる

`↑` and `↓` to navigate • `Enter` to select • `Esc` to close • `/` to open