繁体   English   中英

使用 XAMPP 的 PHP 数据库连接问题

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM