Mysqli работает из командной строки, но не через HTML / браузер - PullRequest
0 голосов
/ 02 октября 2018

У меня есть следующие версии 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 работает правильно из командной строки, но не черезBrowser.Я понял, что переменная $ num не имеет значения при вызове php-кода через браузер.Похоже, соединение с базой данных не установлено.

Понятия не имею, почему.

PS: php -i |grep mysqli -----> показывает, что mysqli включен

PPS: результат Mysqli веб-страницы с <?php phpinfo() ?> enter image description here

PPPS: файлы журнала (syslog,mysql / error.log, apache2 / error.log) не имеют записей при вызове скрипта через браузер.

1 Ответ

0 голосов
/ 02 октября 2018

Правильное решение было так, как видно в комментариях:

Добавление

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

к сценарию.Это привело к сообщению об ошибке: Ошибка подключения: доступ запрещен для пользователя 'root' @ 'localhost'

Причиной этого был метод идентификации mysql MariaDB "unix_socket", который не разрешал идентификацию через вызов скрипта браузера.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...