提问人:Lauro182 提问时间:1/23/2020 更新时间:1/23/2020 访问量:171
PHP调试mysqli连接,mysqli实例工作不正常?
PHP Debugging mysqli connection, mysqli instances do not work properly?
问:
我已经有一段时间没有在这里发布问题了,但我需要一些帮助,试图理解这种行为。
我有一个简单的脚本来调试我的连接是否已建立,使用 mysqli。
$mysqli = new mysqli(HOST, USER, PASSWORD, DB);
if ($mysqli->connect_error){
die('Connection error: (' . $mysqli->connect_errno . ') '.$mysqli->connect_error);
}else{
die(var_dump($mysqli));
}
这很好用,如果没有建立连接,无论出于何种原因,connect_error都有我的错误,脚本死了,我知道它为什么死了,它告诉我。否则,它会死掉并抛给我连接对象属性值,一切都很好。
但是,如果我在声明和调试之间添加一个新实例,则有 2 种可能性:
案例 1
$mysqli_invalid = new mysqli(HOST, USER, PASSWORD, DB);
$mysqli_valid = new mysqli(HOST_valid, USER_valid, PASSWORD_valid, DB_valid);
if ($mysqli_invalid->connect_error){ <--NOT SET, it comes NULL
die('Connection error: (' . $mysqli_invalid->connect_errno . ') '.$mysqli_invalid->connect_error);
}else{
die(var_dump($mysqli_invalid)); <--ALL CLASS PROPERTIES ARE NULL
}
在这种情况下,它会跳转到 else,并抛出一个 mysqli 对象,其所有属性为 NULL。
案例 2
$mysqli_invalid1 = new mysqli(HOST, USER, PASSWORD, DB);
$mysqli_invalid2 = new mysqli(HOST_invalid2, USER_invalid2, PASSWORD_invalid2, DB_invalid2);
if ($mysqli_invalid1->connect_error){ <--SET WITH $mysqli_invalid2 values.
die('Connection error: (' . $mysqli_invalid1->connect_errno . ') '.$mysqli_invalid1->connect_error);
}else{
die(var_dump($mysqli_invalid1));
}
在这种情况下,它死了,但我的 $mysqli_invalid1 有 $mysqli_invalid2 值。
在我的项目中,我有 5 个连接,因此我需要在尝试建立连接后检查每个连接是否正确。如果我尝试建立所有连接,然后检查是否每个连接都已建立,它不会像我期望的那样工作。
如果PHP是面向对象准备的,为什么会有这种行为呢?
答: 暂无答案
评论