【问题标题】:Mysqli object is empty, no connection errormysqli对象为空,无连接错误
【发布时间】:2013-08-22 15:47:18
【问题描述】:

我有一段非常简单的代码。

$mysqli = new mysqli($host, 'user', 'pass', $dbname);  
        if ($mysqli->connect_error) {
           //       ...
        }
 print_r($mysqli);
//  ...

有 2 台服务器。一个使用 PHP 5.3 另一个使用 5.2.4 第一个服务器正常工作,并打印有关连接的所有详细信息。

第二台服务器没有返回任何错误。所以看起来连接成功了。 但是对象是空的(虽然存在)

mysqli Object
(
)

可能是什么问题?

【问题讨论】:

  • 我经常看到这种类型的问题,你应该阅读common database debugging for PHP and MySQL
  • 感谢您的建议。正如我提到的,完全相同的脚本适用于相同的数据库。所以你所有的基本清单都可以

标签: php mysqli


【解决方案1】:

答案在 New Mysqli Object is Null

更多测试表明,尽管对象似乎是空的,但属性却不是。 并且可以直接访问。 所以如果我这样做了

print_r($mysqli->host_info);

我得到了预期的数据。而

print_r($mysqli)

显示为空。 它看起来像 PHP 5.2.x 中的一个错误 正如我在问题中提到的,它在使用 PHP 5.3 的服务器上正常工作

【讨论】:

    【解决方案2】:
    $mysqli = new mysqli($host, 'user', 'pass', $dbname);  
    if (mysqli_connect_errno()) {
        throw new Exception(mysqli_connect_errno()." ".mysqli_connect_error());
    }
    

    适用于任何版本

    【讨论】:

    • 不,不要混合 OO 和程序。或者您是否建议,在 PHP 5.2 中,我们必须 获得这个属性?我在the manual's page on this topic 中看不到任何证据。请清楚并解释您的答案。
    • 没有。这也不行。 if (mysqli_connect_errno()) { throw new Exception(mysqli_connect_errno()." ".mysqli_connect_error());回声“错误”; } else { echo '没有错误'; } print_r($mysqli);返回无错误 mysqli Object ( )
    • @AlexanderPresman 好的,我想$mysqli = mysqli_init(); 也返回空对象?你确定你能看到所有的 PHP 错误吗?
    • 我想这个答案是在你知道你可以强制警告进入异常之前发布的? :) 我正在尝试找到我的问题的答案,mysqli_connect_error 什么时候有用,我找到了这个答案。
    • @Dharman 我不会这样称呼它。事后看来,现在这毫无意义。但是向后兼容性很重要。这个函数是在没有人想到使用异常的时候添加的,但是每个人都手动检查了函数的结果。
    猜你喜欢
    • 2013-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-12-08
    • 2017-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-21
    相关资源
    最近更新 更多