警告:mysqli :: query():无法获取mysqli-PHP7.1和M​​ySQL5.7

时间:2018-08-01 21:22:11

标签: php mysql macos apache mysqli

  

警告::mysqli :: __ construct():php_network_getaddresses:getaddrinfo   失败:提供了节点名或服务名,或者在   /Users/davidrooney/Sites/conn_test.php,第10行

     

警告::mysqli :: __ construct():(HY000 / 2002):   php_network_getaddresses:getaddrinfo失败:nodename或servname   提供,或在/Users/davidrooney/Sites/conn_test.php中未知   第10行

     

连接成功

     

警告::mysqli :: query():无法获取   第14行的/Users/davidrooney/Sites/conn_test.php中的mysqli

     

你好世界

     

警告::mysqli :: close():无法在第18行的/Users/davidrooney/Sites/conn_test.php中获取mysqli

以下是我的conn_test.php文件:

{{1}}

列出的PHP代码能够连接到我的SQL数据库“ testdb”,但是在表“ testtable”上进行查询会引发错误。

我在该表“ first_name”中有一列,其中一个条目为“ john”。我已经验证了我的apache服务器在启用PHP7.1的情况下能否正常运行,因为我可以在单独的脚本中输出phpinfo()。 MySQL服务器(mysql5.7)也正在运行并且运行良好,因为我可以通过Sequel Pro访问它并创建数据库,表等。

我还可以从Sequel Pro中手动查询并返回'john',因此我知道查询也可以。

我刚刚开始使用PHP,但是在网上阅读了所有内容之后,这段代码看起来是正确的。

我想念什么?

2 个答案:

答案 0 :(得分:4)

鉴于恕我直言未回答有问题的答案,我觉得我需要介入。

正如我在评论中所述,引号需要从数据库声明中删除。

$connect = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

因为它们是常量。

参考文献:

错误报告也将有所帮助:

编辑:

user3783243在评论中指出:

  

另外,当您使连接正常工作时,$ message将成为结果对象,您将需要获取该对象。 – user3783243

是正确的。回显查询只是结果集。您需要遍历(成功的)结果,并且有很多方法可以做到这一点。

您似乎不熟悉使用数据库。如果您仔细阅读PHP.net http://php.net/manual/en/mysqli.query.phpmysqli_query()函数中的手册,您会发现许多示例,只要查询成功即可获取并显示查询结果。

如果看不到结果,则可能是查询失败。这是您需要在查询中使用mysqli_error($connect)检查错误的时候。

答案 1 :(得分:-1)

尝试MySQLi面向对象

<?php
$servername = "localhost";
$username = "username";
$password = "";
$dbname = "testdb";

$connect = new mysqli($servername, $username, $password, $dbname);
if ($connect->connect_error) {
    die("Connection failed: " . $connect->connect_error);
}
$sql = "SELECT first_name FROM testtable";
$result = $connect->query($sql);

if ($result->num_rows > 0) {
    while($row = $result->fetch_assoc()) {
        echo "Hello " . $row["first_name"];
    }
}

$connect->close();
?>