2012-04-30 23 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

卫生署,5.2.6!我会更新自己,但只是检查目标主机,它也是5.2.6,我不能改变它,所以我想我会写它非OO :) – Codecraft

+0

@Codecraft要清楚,你可以使用MySQLi完全OO除了这一个连接错误检查。我只是将上面的'mysqli_connect()'改为'new mysqli()'。复制/粘贴错误。 –

+0

谢谢,顺便说一句。我的信仰得到了恢复,第二次试图在这个问题被人们劫持并贬低后停止实际阅读正确的答案。 – Codecraft