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