提交注释时出现 PHP 错误


php error when submitting comment

我在提交评论的 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); 。这是我第一次看到任何服务器名称%。我对此没有太多想法。但是,您可以将%替换为localhostport numberIP 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 中删除。了解PDOMySQLi的预处理语句。

使用 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。