连接到mysql数据库但无法打印数据

时间:2016-03-23 22:34:00

标签: php mysql mysqli

我成功连接到我的数据库,我试图打印我的数据,但我只能在浏览器中看到“已成功连接”行。这是我的代码:

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

$db=mysqli_connect("host","root","pass","dbase");

if (!$db) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}
echo "Connected successfully";
$sql = "SELECT username FROM students";
$result = $db->query($sql);

if ($result->num_rows > 0) {
   // output data of each row
   while($row = $result->fetch_assoc()) {
   echo "username: " . $row["username"].  "<br>";
   }
} else {
  echo "0 results";
}
$db->close();
?>

所以问题是SELinux阻止了Apache Web服务器执行的PHP脚本的远程连接。 终端中的setsebool -P httpd_can_network_connect = 1就行了。

2 个答案:

答案 0 :(得分:1)

编辑请注意未来的读者。在回答发布后,OP根据更正的语法编辑了他们的问题,这个答案基于他们的原始帖子:

并补充说:

  

“所以问题是SELinux阻止了Apache Web服务器执行的PHP脚本的远程连接。终端中的setsebool -P httpd_can_network_connect = 1就行了。”

首先,您没有选择数据库。

if (!db)需要更改为if (!conn)if ($db->connect_error)if ($conn->connect_error)。需要在整个代码中使用相同的变量。

您还使用了错误的变量$db它是$conn(或者您想要使用的任何内容,但正如我上面所说,您需要为连接和查询使用相同的变量。

错误报告http://php.net/manual/en/function.error-reporting.php会告诉您一个未定义的变量。

因此:

$conn = @mysqli_connect("host","root","pass", "your_database");

旁注:host我认为它只是您正在使用的主持人的代表。如果您使用自己的PC,则可以使用localhost并以http://localhost/file.php而不是file///file.php的身份访问该文件,如果这是您正在执行的操作,则无效。 Web浏览器不会像这样解析PHP指令,你需要安装一个webserver / PHP才能使它工作,包括MySQL。

阅读连接手册:

并在测试时删除@符号。它们是错误抑制器。

使用http://php.net/manual/en/mysqli.error.php

检查错误

手册中的示例:

旁注:127.0.0.1localhost或托管时,请使用他们为您提供的设置。

<?php
$link = mysqli_connect("127.0.0.1", "my_user", "my_password", "my_db");

if (!$link) {
    echo "Error: Unable to connect to MySQL." . PHP_EOL;
    echo "Debugging errno: " . mysqli_connect_errno() . PHP_EOL;
    echo "Debugging error: " . mysqli_connect_error() . PHP_EOL;
    exit;
}

echo "Success: A proper connection to MySQL was made! The my_db database is great." . PHP_EOL;
echo "Host information: " . mysqli_get_host_info($link) . PHP_EOL;

mysqli_close($link);

error reporting添加到文件的顶部,这有助于查找错误。

<?php 
error_reporting(E_ALL);
ini_set('display_errors', 1);

// Then the rest of your code

旁注:只应在暂存时进行显示错误,而不是生产。

答案 1 :(得分:0)

您使用的另一个变量与您连接到数据库的变量不同!

您已连接到$db,但使用$conn执行查询。 此外,在检查是否可以建立数据库连接时,您$之前没有db

当您在终端窗口中打开PHP错误日志时,它总是有很大帮助。 99%的错误可由您自己修复。