2011-06-17 32 views
3

これには何らかの理由がありますか?ここでmysqli_connectは動作しませんが、mysql_connectはなぜですか?

は、コードは次のとおりです。

$dbc = mysqli_connect (DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
echo $dbc; 
if(!$dbc){ 
die('could not open a connection'.mysqli_connect_errno() . mysqli_connect_error()); 
} 

私は、MySQLとのmysqliのを置き換える場合は、再度、私は(私はそれは良いことだと仮定)返されたDBCのリソースIDを取得します。私はそれがはるかに良い/より速いと聞いてmysqliを使いたいと思います。今、私はエラーコード2003を取得しています。

+4

を使用することを検討してください。 php)を 'Mysqli'に置き換えています... die文の代わりに – prodigitalson

+1

のmysqli_errorを呼び出して、エラーメッセージを取得します。また、mysqli以外のメソッド間の違いが「より良い」ことも理解しておく必要があります。 – Cfreak

+0

私はPDOを使用して2番目のprodigitalsonのコメント – Cfreak

答えて

3

mysql_connect()およびmysqli_connect()は、php.iniファイルの2つの異なるデフォルトポートを使用します。私はこれらが標準的なデフォルトの3306とは異なるとは思わないが、チェックの価値があるか、ホストURLへのパスを追加しようとする。

mysqli_connect

mysqliのmysqli_connect(... int型$ポート=は、ini_get( "mysqli.default_port")...)

mysql_connect

PHPディレクティブmysql.default_hostが未定義(デフォルト)の場合、デフォルト値'localhost:3306'です。 SQLセーフモードでは、このパラメーターは無視され、値 'localhost:3306'が常に使用されます。

編集:マニュアルページを十分に読んでいなかったので間違っていました。

あなたの接続は問題ありませんが、あなたが上記のように返すオブジェクトをチェックしたくないと思います。 mysqli_connect_errno()を使用します。以下はPHP.netの例です。

$mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db'); 

if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' 
      . mysqli_connect_error()); 
} 

注:のみ
OO構文:接続 はまだ返されたオブジェクトを失敗した場合。 接続が失敗したかどうかを確認するには、 mysqli_connect_error() 関数または前述の例のようにmysqli-> connect_error プロパティを使用します。あなたが実際に[ `PDO`](http://php.net/manual/en/book.pdoを使用する必要がありますすることができた場合は

Source

+0

手続きコーディングスタイル – locoboy

+0

を参照してくださいね、そうです。 –

+0

あなたの新しい答えには本当に申し訳ありません。新しいmysqli_connect呼び出しはどのように見えますか? – locoboy

1

mysqli_connectmysql_connectは異なるパラメータをとり、異なる値を返します。

+0

プロシージャコーディングスタイル – locoboy

+1

@ cfarm54を使用した場合は、これらのスクリプトが動作しないと思われます。上記のドキュメントによれば、mysqli_connect(OOPおよび手続き型バージョン)の4番目のパラメータはdbnameで、どちらの場合でもオブジェクトが返されます。 4番目のパラメータをmysql_connect()の 'new_link'に一致させたドキュメントを見つけることができませんでした。あなたはできる? –

+0

アイデアはありませんが、mysqliをmysqlに置き換えるだけで動作するようです。これはまだリソースIDを返すので、これは解決策ではありません。 – locoboy

0

$dbc= new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME); 
関連する問題