【问题标题】:why mysqli_connect() returning true even I passing wrong username?为什么即使我传递了错误的用户名,mysqli_connect() 也会返回 true?
【发布时间】:2017-10-17 04:39:39
【问题描述】:

这是我的代码。

<?php
    $server = "localhost";
    $uname = "replace it with anything";
    $pswd = "";

    $conn = mysqli_connect($server, $uname, $pswd);

    if(!$conn){
        die('Caught');
    }
    else{
        die('Connected');
    }   
?>

不管我在mysqli_connect() 中作为用户名 传递了什么。它总是返回true。在密码错误的情况下,显示访问被拒绝的错误,但我不知道为什么,无论我在用户名中输入什么,它总是返回true。

【问题讨论】:

    标签: php mysql sql apache phpmyadmin


    【解决方案1】:

    它不返回一个布尔值,而是一个表示连接的对象。然后,您可以检查对象的连接性。来自手册:

    <?php
    $mysqli = new mysqli('localhost', 'my_user', 'my_password', 'my_db');
    
    /*
     * This is the "official" OO way to do it,
     * BUT $connect_error was broken until PHP 5.2.9 and 5.3.0.
     */
    if ($mysqli->connect_error) {
        die('Connect Error (' . $mysqli->connect_errno . ') '
                . $mysqli->connect_error);
    }
    

    【讨论】:

    • 另外值得注意的是面向对象的方法 (new mysqli(...)) 比程序替代方法要简洁得多。
    【解决方案2】:

    试试

       <?php
    $mysqli = new mysqli("host", "username", "password", "database") or die($mysqli->error());
    
    if ($mysqli->connect_errno) {
    echo "error";
    exit();
    }
    
        ?>
    

    【讨论】:

      猜你喜欢
      • 2017-07-25
      • 2021-11-30
      • 2020-04-02
      • 2020-03-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-04
      相关资源
      最近更新 更多