PHP 与 XAMPP 中的数据库连接问题

Problem With DB Connection in PHP with XAMPP

在使用 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');
}

?>

但我收到以下错误:

Warning: mysqli_connect(): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\php\connect.inc.php on line 8

Warning: mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known. in C:\xampp\htdocs\php\connect.inc.php on line 8

Warning: mysqli_select_db() expects exactly 2 parameters, 1 given in C:\xampp\htdocs\php\connect.inc.php on line 8 could not connect

我该如何解决这个问题?

单引号插入,他们发送文字文本,包括$,这不是你的意思想要。

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

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

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

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

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

mysqli的正确使用方法是:

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

它的操作完全相同,只是它要小得多,例如:

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

而不是更冗长的:

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

语句操作函数变得更加冗长。

您没有在 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);

一个简单的面向对象风格的连接字符串就可以发挥作用

 <?php
$mysqli = new mysqli("localhost","root","","a_database");

// Check connection
if ($mysqli -> connect_errno) {
  echo "Failed to connect to MySQL: " . $mysqli -> connect_error;
  exit();
}
?>