Php 为什么我在添加错误用户名时没有出错?

Php 为什么我在添加错误用户名时没有出错?,php,mysqli,Php,Mysqli,我正在创建数据库和PHP之间的连接,当我添加错误的用户名(实际上,真正的用户名是root,我添加了rsdsoot)时,仍然显示我已连接,而不是显示错误。有什么原因吗 $servername = "localhost"; $username = "rsdsoot"; $password = ""; $conn = mysqli_connect($servername, $username, $password); if (!$conn) { die("Connection failed

我正在创建数据库和PHP之间的连接,当我添加错误的用户名(实际上,真正的用户名是root,我添加了rsdsoot)时,仍然显示我已连接,而不是显示错误。有什么原因吗

$servername = "localhost";
$username = "rsdsoot";
$password = "";

$conn = mysqli_connect($servername, $username, $password);

if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";

试试这个,一种使用Try-catch的方法:

public function connect($dbhost, $dbuser, $dbpass) 
{
    try 
    {
        $cxn = @mysqli_connect($dbhost, $dbuser, $dbpass);
    } 
    catch ( Exception $e )
    {
        print 'Could not connect to the mysql server: '. $e->getMessage() .'\n';
        exit($e->getMessage());
    }
}
此外,我还构建了一个类来简化与MySql数据库的通信,并使执行查询更加容易。试试看。这是我的开源项目


您的成功/失败检查不正确
mysqli_connect()
将返回一个对象,无论结果如何,因此
$conn
将永远不会触发。。。在php.net上查找手册;第一个例子说明了如何处理这个问题。如果我添加了错误的主机或密码,它可以正常工作,但是如果我添加了错误的用户名,它不会给我任何错误。@WebQoda你能手动检查你放在那里的用户是否真的存在吗?(尝试MySqlWorkBench)。我无法重现此错误。如果我使用了无效的用户名,我会得到一个异常。好吧,如果你得到一个异常,你可以尝试捕获来获得解决方案。为什么你会沉默错误?你为什么抓住这个例外?为什么它在类方法中?@marcus这不是我的问题,我正在检查如果我添加了错误的用户名,为什么它不起作用。如果我使用任何密码,它会给我一个错误,但在错误的用户名,它不会给我一个错误?为什么会这样?我在官方PHP文档中找不到任何与此相关的信息@Dharman这只是一种简单的替代方法,但更好的方法是,我提供了我自己的类,我做了很多测试并处理了一般情况……参见