@DVoropaev
Ставлю + к карме на хабре за ответы на вопросы

Как понять, почему не проходит запрос в БД(mysql) из PHP(Apache)?

print("hello1")
mysqli_query($link,"INSERT INTO users SET name='".$login."', password='".$password."';");
print("hello2")

hello1 и hello2 выводятся, значит mysqli_query(...) исполняется. В /var/log/apache2/error.log ошибок нет. Но при этом запись в БД не появилась.
При этом запросы вида "SELECT * FROM ..." проходят, значит связь с БД есть.
Подставил в код:
print("INSERT INTO users SET name='".$login."', password='".$password."'");

Получил запрос, который PHP отправляет на mysql:
INSERT INTO users SET name='test', password='b6d4a88571597a64ce915d5e88065dbb'

Отправил запрос на mysql вручную - запись появилась.
  • Вопрос задан
  • 80 просмотров
Пригласить эксперта
Ответы на вопрос 2
nokimaro
@nokimaro Куратор тега PHP
Используйте mysqli_error(); чтобы получить текст ошибки
Точка с запятой в конце запроса роли не играет.
В вопросе в первом примере нету "SET", а там где print() уже запрос с SET

mysqli_query($link,"INSERT INTO users SET name='".$login."', password='".$password."';");
var_dump(mysqli_error($link)); //<---


5e8ad21f748a9497179543.png
Ответ написан
@CyclusVitalis
Оберните имена таблицы и полей апострофами
INSERT INTO `users` SET `name`='test', `password`='b6d4a88571597a64ce915d5e88065dbb'

а то и name, и password в зарезервированных словах упоминаются.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы