downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

mysqli::debug> <mysqli->connect_error
Last updated: Fri, 13 Nov 2009

view this page in

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 オブジェクト指向型

<?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();
?>

例2 オブジェクト指向型で 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();
?>

例3 手続き型

<?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::debug> <mysqli->connect_error
Last updated: Fri, 13 Nov 2009
 
add a note add a note User Contributed Notes
mysqli::__construct
Anonymous
14-Sep-2009 09:37
If you get an error like
  Can't connect to MySQL server on 'localhost' (10061)
and you use named pipes/socket connections (or aren't sure how you installed the MySQL server) try the following connect command:

<?php
mysqli_connect
('.', $user_name, $password, $database_name, null, 'mysql');
?>

The '.' as hostname is absolutely necessary when using named pipes. 'localhost' won't work. 'mysql' is the standard name for the pipe/socket.
Slavyansk2.ru
26-Sep-2008 02:14
If you have error like "Trying to clone an uncloneable object of class..." when trying connect, add record

php_value zend.ze1_compatibility_mode 0

in your .htaccess file. This resolve connection problem.
chip1977 at mail dot ru
28-Jan-2008 09:52
To specify charset in my.cnf file you just have to add
skip-character-set-client-handshake directive after
[mysqld]
default-character-set=utf8

mysqli::debug> <mysqli->connect_error
Last updated: Fri, 13 Nov 2009
 
 
show source | credits | stats | sitemap | contact | advertising | mirror sites