Я создал простую программу php, работающую на сервере apache2, php работает, но не подключается к серверу sql, когда я просматриваю файл на другом устройстве. База данных, которую я использую на своем устройстве Debian 9, - это MariaDB.
<?php
$conn = new mysqli("localhost","root","password","login");
$query = "SELECT * FROM users WHERE username = 'Martin';
$result = $conn->query($query);
$row = $result->fetch_array(MYSQLI_ASSOC);
echo $row['password'];
?>
Я почти уверен, что правильно понял код (я пробовал mysql_connect и другие методы). Я не понимаю, почему веб-страница выдает ошибку, когда я пытаюсь просмотреть страницу на другом устройстве.
Когда я использовал устройство Debian, время его работы было разным. Иногда это срабатывало, а иногда - нет. Таблицы и база данных на сервере sql в порядке, я проверил это и не думаю, что это ошибка.
MariaDB [(none)]> select * from login.users;
+----+----------+----------+
| id | username | password |
+----+----------+----------+
| 1 | Martin | pass |
+----+----------+----------+
1 row in set (0.01 sec)
MariaDB [(none)]>
Кто-нибудь может мне помочь? Я думаю, что мне нужно включить что-то в файлах apache, но мои знания ограничены, и я не знаю, с какой проблемой я столкнулся.
the webpage is giving me an error а ошибка есть?






Помимо всего прочего, следующая строка:
$query = "SELECT * FROM users WHERE username = 'Martin';
должно быть
$query = "SELECT * FROM users WHERE username = 'Martin'"; // add the missing double quote
Если это не решит проблему, вам, вероятно, следует опубликовать сообщение об ошибке.
Да, плохо, в коде есть двойные кавычки (ошибка копирования и вставки). Когда я просматриваю сценарий в веб-браузере, он говорит, что сервер «не может обработать HTTP-ошибку 500 запроса».
Сообщение браузера не содержит достаточно информации, чтобы быть полезным. Просмотрите файлы журнала вашего веб-сервера, чтобы увидеть фактическую ошибку, сгенерированную PHP.
[Вс, 03 июня 18: 12: 24.097587 2018] [: ошибка] [pid 30052] [клиент 192.168.0.9:44526] Предупреждение PHP: mysqli :: __ construct (): (HY000 / 1698): доступ запрещен для пользователя 'root' @ 'localhost' в /var/www/html/db.php в строке 8, ссылка: 192.168.0.33/login.php [вс, 03 июня 18: 12: 24.097937 2018] [: ошибка] [pid 30052] [клиент 192.168.0.9:44526] PHP Предупреждение: mysqli :: query (): не удалось получить mysqli в /var/www/html/db.php в строке 10, ссылка: 192.168.0.33/login.php
[Вс, 03 июня 18: 12: 24.100875 2018] [: ошибка] [pid 30052] [клиент 192.168.0.9:44526] Неустранимая ошибка PHP: Неперехваченная ошибка: вызов функции-члена fetch_array () при нулевом значении в / var / www / html / db.php: 11 \ n Трассировка стека: \ n # 0 {main} \ n, брошенная в /var/www/html/db.php в строке 11, ссылка: 192.168.0.33/login.php _Это то, что записывается в журнал ошибок при запуске login.php
Можете ли вы поделиться первой дюжиной или около того строк db.php? Обязательно продезинфицируйте все важное (замените пароли / домены / имена баз данных).
В любом случае, исходя из вашего исходного сообщения и этой ошибки, вполне вероятно, что проблема заключается в следующем: `` $ conn = new mysqli ("localhost", "root", "password", "login"); `` У вас неправильный пароль, или имя пользователя, или MySQL не настроен для прослушивания localhost, или неправильный порт и т. д. Сосредоточьте свои усилия на простом успешном подключении к БД. Попробуйте подключиться к настольной программе, такой как MySQL workbench или DBeaver, и посмотрите, к чему это приведет. Вы никогда не подключаетесь к базе данных.
Я провел некоторое тестирование за последние несколько дней, я создал нового пользователя mysql, и теперь, похоже, он работает. У меня он работает, но я все еще не понимаю, почему это не сработало. Спасибо, что пытались мне помочь.
Раньше связи не было. Если вы ничего не меняли, кроме создания нового пользователя в той же базе данных MySQL, проблема могла заключаться в том, что ваш скрипт запущен на другом сервере, а MySQL был настроен так, чтобы root не мог подключаться с удаленных хостов (очень разумные и общие меры предосторожности).
В конце строки 3 отсутствует двойная кавычка?