【问题标题】:Problem With DB Connection in PHP with XAMPP使用 XAMPP 的 PHP 中的数据库连接问题
【发布时间】:2019-07-30 18:28:40
【问题描述】:

在使用 Xampp 时使用以下内容连接到 MySQL 服务器。

<?php
$mysql_host = 'localhost';
$mysql_user = 'root';
$mysql_pass = '';

$mysql_db = 'a_database';

if(mysqli_connect('$mysql_host','$mysql_user','$mysql_pass') || !mysqli_select_db($mysql_db)) {
    die ('could not connect');
}

?>

但我收到以下错误:

警告:mysqli_connect():php_network_getaddresses:getaddrinfo failed:不知道这样的主机。在 C:\xampp\htdocs\php\connect.inc.php 8号线

警告:mysqli_connect(): (HY000/2002): php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。 在第 8 行的 C:\xampp\htdocs\php\connect.inc.php 中

警告: mysqli_select_db() 需要 2 个参数,1 个在 第 8 行的 C:\xampp\htdocs\php\connect.inc.php 无法连接

我该如何解决这个问题?

【问题讨论】:

    标签: php mysql xampp


    【解决方案1】:

    单引号插入,它们以文字文本发送,包括$,这不是您想要的。

    无论如何,您都不应该引用这些值,只需将它们按原样放置即可:

    $db = mysqli_connect($mysql_host, $mysql_user, $mysql_pass)
    

    在 PHP 代码中看到诸如 "$x" 之类的东西是一种非常常见的反模式,这可能是在必要的地方从 shell 脚本中冒出来的。在 PHP 中不是这样,而且经常像这里一样引起麻烦。

    不要忘记将您的数据库连接保存到一个变量中,否则它会在您使用之前被丢弃。

    另外需要注意的是,mysqli 的面向对象接口明显不那么冗长,使代码更易于阅读和审核,并且不容易与过时的mysql_query 接口混淆。在您对程序风格投入过多之前,值得转换一下。示例:$db = new mysqli(…)$db-&gt;prepare("…") 过程接口是 PHP 4 时代引入的mysqli API 的产物,理想情况下不应在新代码中使用。

    mysqli的正确使用方式是:

    $db = new mysqli($mysql_host, $mysql_user, $mysql_pass)
    

    除了更小之外,它的操作完全相同,例如:

    $stmt = $db->prepare("...");
    

    而不是更冗长:

    $stmt = mysqli_prepare($db, "...")
    

    对于语句操作函数来说,这会变得更加冗长。

    【讨论】:

    • 感谢您的回答。也解决了我的问题
    【解决方案2】:

    你没有在mysqli_select_db中指定数据库连接

    试试这个吧!

    $mysql_host = 'localhost';
    $mysql_user = 'root';
    $mysql_pass = '';
    
    $mysql_db = 'a_database';
    
    $db = mysqli_connect($mysql_host, $mysql_user, $mysql_pass);
    
    if (mysqli_connect_errno())
    {
      echo "Failed to connect to MySQL: " . mysqli_connect_error();
    }
    
    // you select db with the mysql connection variable
    mysqli_select_db($db, $mysql_db);
    

    【讨论】:

      【解决方案3】:

      一个简单的面向对象风格的连接字符串可以做到这一点

       <?php
      $mysqli = new mysqli("localhost","root","","a_database");
      
      // Check connection
      if ($mysqli -> connect_errno) {
        echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
        exit();
      }
      ?>
      

      【讨论】:

        猜你喜欢
        • 2020-12-20
        • 2013-01-13
        • 2019-09-23
        • 2014-04-10
        • 2018-10-28
        • 1970-01-01
        • 2016-08-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多