Я новичок в MySQL, и мне трудно заставить работать запрос mysqli. Я могу подключиться к базе данных и запросить на машине разработки, на которой все должно работать, но запрос не возвращает данных о капнеле. Я прочитал соответствующий пост по этой проблеме, и ни один из них, похоже, не решает проблему. Я действительно хочу знать, является ли это недостатком хостинга, ошибкой версии PHP или моим кодом. Ниже мое подключение к базе данных и запрос.
<?php
define("DB_SERVER", "localhost");
define("DB_USER", "myuser");
define("DB_PASSWORD", "mypassword");
define("DB_DATABASE", "mydatabase");
$conn = mysqli_connect(DB_SERVER, DB_USER, DB_PASSWORD, DB_DATABASE);
?>
$email = mysqli_real_escape_string($conn, $_POST['email']);
$password = mysqli_real_escape_string($conn, $_POST['password']);
$sql = "SELECT * FROM 'sbausers' WHERE email = '$email' AND Password = '$password'";
$stmt = mysqli_query($conn, $sql);
$row = mysqli_fetch_array($stmt);
if ($row > 0){
echo 'it works';
} else {
echo 'it doesn't work';
}
Вы закрыли свой тег Php перед выполнением кода запроса
ini_set('display_errors', 1); ini_set('log_errors',1); error_reporting(E_ALL); mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT); в начало вашего скрипта. Это заставит любые ошибки mysqli_ генерировать исключение, которое вы можете увидеть в браузере, а также обычные ошибки PHP.
Храните ли вы пароли в незашифрованном виде в базе данных?
password_hash() и password_verify(), используйте их. А вот и хорошие идеи о пароляхСтрока подключения находится в другом файле
Вы inlcude или require другой файл в этом файле?
В любом случае, согласно первому DUP, ваш запрос неверен
@Riggs Пожалуйста, я уже говорил, что читал соответствующий пост, но ни один из комментариев, похоже, не решает проблему. Вопрос также не в одинарных кавычках или ошибках php. Он работает на машине разработки в порядке с включенной ошибкой кодов.
Если вы перенесли этот код с тестового на рабочий сервер. Скорее всего, идентификатор пользователя и пароль, используемые в базе данных LIVE, отличаются от используемых на тестовой машине. ТАКЖЕ сервер базы данных может быть не включен localhost
@RiggsFolly Да, я связался с этими хостинг-провайдерами, и они изучают это, я считаю, что созданная база данных находится не на локальном хосте.
Я нахожу решения после более глубокого изучения проблемы. Я понял, что в среде Linux чувствительность к регистру действительно важна как для базы данных MySQL, так и для таблиц, а также для структуры каталогов. Я переписал все запросы, убедившись, что все имена таблиц в верхнем регистре заменены на строчные. Я также обнаружил, что в файле конфигурации есть директива, которую можно изменить, чтобы разрешить распознавание имен таблиц в верхнем регистре, но это было немного громоздко. Любой разработчик, использующий хостинг в новой среде Linux, может столкнуться с этим. Я хочу, чтобы кто-то с более высокой репутацией опубликовал это как ответ. Спасибо






Ваш скрипт широко открыт для Атака SQL-инъекцией Даже если вы избегаете ввода, это небезопасно! Используйте подготовленные параметризованные операторы либо в
MYSQLI_, либо вPDOAPI