【问题标题】:$db = new PDO("mysql:host=$host;db_name=$db_name", $user, $pass);$db = new PDO("mysql:host=$host;db_name=$db_name", $user, $pass);
【发布时间】:2015-02-15 04:15:32
【问题描述】:

我在安装脚本时遇到了这个问题。它给了我以下错误:

警告:PDO::__construct(): php_network_getaddresses: getaddrinfo failed:不知道这样的主机。在 C:\xampp\htdocs\dreads\recent\test\Feedstack-master\Feedstack-master\app\models\install.php 第 35 行

数据库错误:SQLSTATE[HY000] [2002] php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。

第 35 行 //$db = new PDO("mysql:host=$host;db_name=$db_name", $user, $pass);

任何帮助!

defined('_PATHANG') or die;

class modelInstall{

    public function main($request){

            $db_name = $request->get('db_name');
            $host = $request->get('host');
            $user =$request->get('db_username');
            $pass = $request->get('db_password');


            $site_name = $request->get('site_name');
            $site_url = $request->Get('site_url');

            $this->create_db($db_name,$host,$user,$pass);
            $this->create_tables($db_name,$host,$user,$pass);
            $this->update_config($site_name,$site_url,$db_name,$host,$user,$pass);

    }

    public function create_db($db_name,$host,$user,$pass)
    {
            try {
            $db = new PDO("mysql:host=$host;db_name=$db_name", $user, $pass);
                $db->exec("CREATE DATABASE `$db_name`;") 
                or die(print_r($db->errorInfo(), true));
            } catch (PDOException $e) {
                die("DB ERROR: ". $e->getMessage());
            }   
    }

【问题讨论】:

  • '没有这样的主机是已知的。' 无论您提供什么名称作为 MySQL 服务器名称,它都是错误的。
  • 我将 localhost 作为主机,我使用 xampp!*

标签: php mysql pdo


【解决方案1】:

就像 Hobo Sapiens 所说,您提供的主机不存在或拼写错误,我不知道您的 $request 对象的结构。您的对象结构需要类似于以下内容。

class Request 
{
private $host;
private $db_name;
private $db_username;
private $db_pwd;

public function __construct($host,$db_name,$db_username,$db_pwd) {
    $this->host = $host;
    $this->db_name = $db_name;
    $this->db_username = $db_username;
    $this->db_pwd = $db_pwd;
}
public function getHost(){
    return $this->host;
}
public function getDBName(){
    return $this->db_name;
}
public function getDBUsername(){
    return $this->db_username;
}
public function getDBPwd(){
    return $this->db_pwd;
}
}

然后你可以做如下的事情

$request = new Request('localhost', 'TestingPDO', 'root', '');
$modelinstall = new modelInstall();
$modelinstall->main($request);

【讨论】:

    【解决方案2】:

    我就是这样解决的

    <?php
    
    defined('_PATHANG') or die;
    class modelInstall{
        public function main($request){
                $db_name = $request->get('db_name');
                $host = $request->get('host');
                $user =$request->get('db_username');
                $pass = $request->get('db_password');
    
    
                $site_name = $request->get('site_name');
                $site_url = $request->Get('site_url');
                $this->create_db($db_name,$host,$user,$pass);
                $this->create_tables($db_name,$host,$user,$pass);
                $this->update_config($site_name,$site_url,$db_name,$host,$user,$pass);
        }
        public function create_db($db_name,$host,$user,$pass)
        {
                try {
                    $db = new PDO("mysql:host=localhost", 'root', 'mypassword');
    
                    $db->exec("CREATE DATABASE `feedstack`;") 
                    or die(print_r($db->errorInfo(), true));
                } catch (PDOException $e) {
                    die("DB ERROR: ". $e->getMessage());
                }   
        }
    

    【讨论】:

      【解决方案3】:

      尝试通过MYSQLI连接

          $con = mysqli_connect("localhost","my_user","my_password","my_db");
      

      【讨论】:

      • 你的意思不是 $db = new PDO("mysql:host=$host;db_name=$db_name", $user, $pass);
      • 除了使用 PDO 之外,你还可以使用新的 mysqli 进行面向对象的方式
      • 是的,请查看此链接以获取更多信息code.tutsplus.com/tutorials/…
      • 谢谢,但它有点导致我另一个错误致命错误:调用未定义的方法 mysqli::exec() in
      • @HassanAlBourji 这里的问题不是 PDO,而是缺少或拼写错误的主机名。
      猜你喜欢
      • 1970-01-01
      • 2023-03-16
      • 2022-08-10
      • 1970-01-01
      • 2019-11-11
      • 2014-04-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多