2012-04-30 10 views
1

私はこれをもう一度尋ねてみますが、間違いを犯すことはありません....私はMySQLiを使って接続し、意図的に間違った接続変数を使ってエラーを引き起こしています。奇妙なMySQLi OOエラー

期待通りの作業:

$conn = mysqli_connect("localhost","x","x","x"); 
    if (mysqli_connect_errno()) { 
    echo "Couldn't establish database connection blah blah"; 
    } 

をこれはまったく同じに動作するはずですが、それは「MySQLiを取得することはできません」という警告を示す:

$conn = new mysqli("localhost","x","x","x"); 
    if ($conn->connect_errno) { 
    echo "Couldn't establish database connection blah blah"; 
    } 

接続の詳細どちらの方法が細かいですがそれはポイントではありませんが、良いです。

答えて

1

これは、古いバージョンのPHPでは正しく動作しませんでした。

あなたが5.2.9より前のPHPのバージョンを使用している場合は、$conn->connect_error(と私は$conn->connect_errnoも思う)メソッドが正常に機能しなかった、とあなたが代わりにmysqli_connect_errno()を使用する必要がありました。

MySQLi constructor docsはこれについて語ります。

mysqli-> connect_errorプロパティは、PHPバージョン5.2.9および5.3.0では正しく動作します。以前のPHPバージョンとの互換性が必要な場合は、mysqli_connect_error()関数を使用してください。

// May need to use the procedural method, even in OO context... 
$conn = new mysqli("localhost","x","x","x"); 
if (mysqli_connect_error()) { 
    die('Connect Error (' . mysqli_connect_errno() . ') ' 
      . mysqli_connect_error()); 
} 
+0

Doh、5.2.6!私は自分自身を更新するつもりですが、ターゲットホストをチェックしただけで、5.2.6でも変更できませんので、私はそれを非OOと書くでしょう:) – Codecraft

+0

@Codecraft明確にするには、MySQLi接続時にこの1つのエラーチェックを除いて完全にOOです。私は 'mysqli_connect()'を上記の 'new mysqli()'に変更しました。コピー/貼り付けエラー。 –

+0

ありがとう、btw。私の信仰は元に戻されました。実際にそれを正しく読むことをやめなかった人々によってハイジャックされ、下落された後、この質問をしています... – Codecraft