Mysqli通过命令行工作,但不能通过HTML /浏览器工作

时间:2018-10-01 21:53:16

标签: php html mysqli

我有以下apache和php版本:

apache2                   2.4.25-3+deb9u5
apache2-bin               2.4.25-3+deb9u5
apache2-data              2.4.25-3+deb9u5
apache2-utils             2.4.25-3+deb9u5
libapache2-mod-php7.0     7.0.30-0+deb9u1
php              1:7.0+49
php-common       1:49
php-mysql        1:7.0+49
php7.0           7.0.30-0+deb9u1
php7.0-cli       7.0.30-0+deb9u1
php7.0-common    7.0.30-0+deb9u1
php7.0-json      7.0.30-0+deb9u1
php7.0-mysql     7.0.30-0+deb9u1
php7.0-opcache   7.0.30-0+deb9u1
php7.0-readline  7.0.30-0+deb9u1

这是我的PHP代码:

<!DOCTYPE html><html><head><meta charset="utf-8"></head><body>
<?php

$con = mysqli_connect("localhost", "root", "", "hardware");
$sql = "SELECT * FROM fp;";

$res = mysqli_query($con, $sql);
$num = mysqli_num_rows($res);
echo $num;

if ($num > 0)
        {
                echo "Ergebnis: <br>";
        }
else
        {
                echo "Keine Ergebnisse!<br>";
        }

while ($dsatz = mysqli_fetch_assoc($res))
        {
             echo $dsatz["hersteller"] . ", "
                . $dsatz["typ"] . ", "
                . $dsatz["gb"] . ", "
                . $dsatz["preis"] . ", "
                . $dsatz["artnummer"] . ", "
                . $dsatz["prod"] . "<br>";
        }

mysqli_close($con);

?>
</body></html>

PHP代码可从命令行正常运行,但不能通过浏览器正常运行。 我发现通过浏览器调用php代码时,变量$ num没有值。似乎没有建立数据库连接。

我不知道为什么。

P.S .: php -i | grep mysqli ----->显示已启用mysqli

P.P.S .: 使用<?php phpinfo() ?>的网页的Mysqli结果 enter image description here

P.P.P.S:通过浏览器调用脚本期间,日志文件(syslog,mysql / error.log,apache2 / error.log)没有条目。

1 个答案:

答案 0 :(得分:0)

正确的解决方案如注释中所示:

添加

if (!$con) { die("Connection failed: " . mysqli_connect_error()); }

到脚本。 这导致错误消息: 连接失败:拒绝用户'root'@'localhost'

的访问

造成这种情况的原因是MariaDB mysql识别方法“ unix_socket”,该方法不允许通过浏览器脚本调用进行识别。