![](/img/trans.png)
[英]XAMPP PHP and Mongo DB connection authentication failed on database admin
[英]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');
}
?>
但我收到以下错误:
警告:mysqli_connect():php_network_getaddresses:getaddrinfo 失败:不知道这样的主机。 在 C:\\xampp\\htdocs\\php\\connect.inc.php 第 8 行
警告:mysqli_connect(): (HY000/2002): php_network_getaddresses: getaddrinfo failed: No such host is known。 在 C:\\xampp\\htdocs\\php\\connect.inc.php 第 8 行
警告:mysqli_select_db() 需要 2 个参数,第 8 行 C:\\xampp\\htdocs\\php\\connect.inc.php 中给出的 1 个参数无法连接
我该如何解决这个问题?
单引号不会插值,它们会发送文字文本,包括$
,这不是您想要的。
无论如何,您都不应引用这些值,而应按原样放置它们:
$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();
}
?>
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.