Так что я довольно новичок в PHP, но я пытаюсь создать простую систему входа в систему.
Проблема, которая у меня есть сейчас, заключается в том, что по какой-то причине второй оператор SQL не выполняется или ничего не возвращает.
Вот код, который я использую.
include 'dbConn.php';
if(isset($_POST['submit']))
{
global $conn;
$username = $_POST['username'];
$password = $_POST['password'];
$saltSql = "SELECT salt FROM users WHERE email = '$username'";
$saltRes = $conn->query($saltSql);
while($resRow = $saltRes->fetch_assoc()){
$salt = $resRow['salt'];
}
$saltedHash = hash("sha512", ($password . $salt));
$sql = "SELECT email, role, FROM users WHERE email = '$username' AND password = '$saltedHash'";
$res = $conn->query($sql);
if($res->num_rows == 1)
{
//Logged in succesfully
echo "Logged in!";
}
else
{
//Something went wrong
echo "Something went wrong";
}
$conn->close();
}
Когда я вручную пытаюсь выполнить второй запрос в phpmyadmin, я получаю эту ошибку: # 1064 — у вас есть ошибка в вашем синтаксисе SQL; проверьте правильность синтаксиса в руководстве, соответствующем версии вашего сервера MySQL, рядом со строкой «FROM users WHERE email =« username »И пароль =« 5111109d49bc1 ».
Я был бы очень признателен за помощь с этим.
Ваша проблема, кажется, заключается в следующем:
$sql = "SELECT email, role, FROM users WHERE email = '$username' AND password = '$saltedHash'"--------------------------^
У вас есть лишняя запятая ,
Это вызывает сбой вашего запроса SQL. Удалите это, и это работает:
$sql = "SELECT email, role FROM users WHERE email = '$username' AND password = '$saltedHash'"
Других решений пока нет …