我在提交评论的 php 代码中有一个错误,问题是第 4 行代码:
php_network_getaddresses:getaddrinfo 失败:请求的名称为 有效,但未找到请求类型的数据。
有什么想法吗?
<?php
if( $_POST )
{
$con = mysql_connect('%', 'myuser', 'mypassword');
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("_mysite", $link);
$users_name = $_POST['name'];
$users_email = $_POST['email'];
$users_website = $_POST['website'];
$users_comment = $_POST['comment'];
$users_name = mysql_real_escape_string($users_name);
$users_email = mysql_real_escape_string($users_email);
$users_website = mysql_real_escape_string($users_website);
$users_comment = mysql_real_escape_string($users_comment);
$articleid = $_GET['id'];
if( ! is_numeric($articleid) )
die('invalid article id');
$query = "
INSERT INTO `_mysite`.`comments` (`id`, `name`, `email`, `website`,
`comment`, `timestamp`, `articleid`) VALUES (NULL, '$users_name',
'$users_email', '$users_website', '$users_comment',
CURRENT_TIMESTAMP, '$articleid');";
mysql_query($query);
echo "<h2>Thank you for your Comment!</h2>";
mysql_close($con);
}
?>
%
是 mysql 的通配符,当您将其用于用户允许的主机时,它意味着"任何主机",在您的情况下,它可能应该是本地主机。
与您的问题无关,但如果您不知道,您应该考虑放弃mysql_
已弃用的功能,mysqli 是推荐的替代品。
将$link
替换为此行中的$con
mysql_select_db("_mysite", $link);
。这是我第一次看到任何服务器名称%
。我对此没有太多想法。但是,您可以将%
替换为localhost
或port number
或IP Address
<?php
if($_POST)
{
$con = mysql_connect('localhost', 'myuser', 'mypassword');
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("_mysite", $con);
$users_name = mysql_real_escape_string($_POST['name']);
$users_email = mysql_real_escape_string($_POST['email']);
$users_website = mysql_real_escape_string($_POST['website']);
$users_comment = mysql_real_escape_string($_POST['comment']);
$articleid = $_GET['id'];
if(!is_numeric($articleid))
die('invalid article id');
$query = "INSERT INTO `_mysite`.`comments` (`id`, `name`, `email`, `website`,`comment`, `timestamp`, `articleid`)
VALUES (NULL, '$users_name','$users_email', '$users_website', '$users_comment',CURRENT_TIMESTAMP, '$articleid')";
mysql_query($query);
echo "<h2>Thank you for your Comment!</h2>";
mysql_close($con);
}
?>
请停止使用mysql*
函数。这些扩展已在 PHP 7 中删除。了解PDO
和MySQLi
的预处理语句。
使用 MySqli
<?php
if($_POST)
{
$con = mysqli_connect("localhost", "myuser", "mypassword", "_mysite");
if (!$con) {
die('Could not connect: ' . mysqli_connect_error());
}
$users_name = mysqli_real_escape_string($con, $_POST['name']);
$users_email = mysqli_real_escape_string($con, $_POST['email']);
$users_website = mysqli_real_escape_string($con, $_POST['website']);
$users_comment = mysqli_real_escape_string($con, $_POST['comment']);
$articleid = $_GET['id'];
if(!is_numeric($articleid))
die('invalid article id');
$query = "INSERT INTO `_mysite`.`comments` (`id`, `name`, `email`, `website`,`comment`, `timestamp`, `articleid`)
VALUES (NULL, '$users_name','$users_email', '$users_website', '$users_comment',CURRENT_TIMESTAMP, '$articleid')";
mysqli_query($con,$query)
echo "<h2>Thank you for your Comment!</h2>";
mysqli_close($con);
}
?>
有关更多详细信息,请参阅 php_network_getaddresses:getaddrinfo failed。