首页 > 解决方案 > 谁能帮我找出究竟是什么错误?

问题描述

连接失败:SQLSTATE [HY000] [2002] php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。( ! ) 致命错误:未捕获的错误:在第 17 行的 C:\wamp\www\websits\admin\validate.php 中的字符串上调用成员函数 prepare() ( ! ) 错误:调用成员函数 prepare()在第 17 行 C:\wamp\www\websits\admin\validate.php 中的字符串上

代码-

<?php
include_once('connection.php');

function test_input($data) {
  
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

if ($_SERVER["REQUEST_METHOD"]== "POST") {
  
  $adminname = test_input($_POST["adminname"]);
  $password = test_input($_POST["password"]);
  $stmt = $conn->prepare("SELECT * FROM adminlogin");
  $stmt->execute();
  $users = $stmt->fetchAll();
  
  foreach($users as $user) {
    
    if(($user['adminname'] == $adminname) && 
      ($user['password'] == $password)) {
        header("Location: adminpage.php");
    }
    else {
      echo "<script language='javascript'>";
      echo "alert('WRONG INFORMATION')";
      echo "</script>";
      die();
    }
  }
}
?>

// Connection -
<?php
$conn= "";

try {
  $servername = "localhost:3306";
  $dbname = "website";
  $username = "root";
  $password = "";

  $conn = new PDO("mysql:host=$servername and  dbname=website",$username, $password);
  
$conn->setAttribute(PDO::ATTR_ERRMODE,
  PDO::ERRMODE_EXCEPTION);
}
catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?>

标签: phpmysql

解决方案


您的连接字符串错误

Your string
$conn = new PDO("mysql:host=$servername and  dbname=website",$username, $password);

应该

$conn = new PDO("mysql:host={$servername};dbname={$dbname}",$username, $password);

并且您的服务器名称应该没有端口 $servername = "localhost";

请参阅 https://www.php.net/manual/en/pdo.connections.php


推荐阅读