在使用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 失败:未知此类主机。在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无法连接
如何解决此问题?
答案 0 :(得分:4)
单引号请勿插入,它们以文字文本发送,包括$
,这不是您想要的。
无论如何,您都不应该引用这些值,只需将它们原样放置:
$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, "...")
对于语句操作功能,它变得更加冗长。
答案 1 :(得分:1)
您未在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);