PHP错误“ mysqli :: mysqli():( HY000 / 2002)”

时间:2019-03-07 09:03:48

标签: php mysqli xampp

我在运行php代码时遇到问题。仅针对此php文件显示错误,其他简单的文件也可以正常工作。我正在使用xampp。 apache和mysql运行绿色。

<?php
  $username = filter_input(INPUT_POST, 'username');
  $password = filter_input(INPUT_POST, 'password');
  if (!empty($username)){
    if (!empty($password)){
      $host = "localhost";
      $dbusername = "root";
      $dbpassword = "";
      $dbname = "test";
      // Create connection
      $conn = new mysqli ($host, $dbusername, $dbpassword, $dbname);
      if (mysqli_connect_error()){
        die('Connect Error ('. mysqli_connect_errno() .') '. mysqli_connect_error());
      }
      else{
        $sql = "INSERT INTO account (username, password)
        values ('$username','$password')";
        if ($conn->query($sql)){
          echo "New record is inserted sucessfully";
        }
        else{
          echo "Error: ". $sql ." ". $conn->error;
        }
        $conn->close();
      }
    }
    else{
      echo "Password should not be empty";
      die();
    }
  }
  else{
    echo "Username should not be empty";
    die();
  }
?>

2 个答案:

答案 0 :(得分:0)

使用面向对象的mysqli连接时,必须使用所有面向对象的方法。

在下面的代码中,您使用了程序方式:

if (mysqli_connect_error)
{
   die('Connect Error ('. mysqli_connect_errno.') '. mysqli_connect_error);
}

替换为:

if ($conn->connect_error)
{
   die('Connect Error ('. $conn->connect_errno.') '. $conn->connect_error);
}

使用127.0.0.1代替本地主机

答案 1 :(得分:0)

最后找到了解决这个问题的方法,我正在分享它,因为在其他任何地方都找不到解决方法。 $ host应该链接到“ 127.0.0.1”,但是由于未知原因,我的主机只能在“ 127.0.0.1:3307”或末尾的mysql端口名称下工作,请不要忘记以下“:”: ”。附言:尽管阿舒说了什么,但我还是将数据库连接改回了使用过程方式。