2015-10-25 2 views
2

Итак, я новичок в php и mysql, и за последние несколько дней создал систему входа в систему с использованием php и mysql. Я пытаюсь сделать функцию, когда пользователь может изменить свой пароль по следующему запросу:Query was empty with MySQL select Query

$query2 = mysql_query("SELECT password FROM adminusr WHERE id =$idToChange"); 
$result = mysql_query($query2) or die($idToChange.mysql_error()); 
+0

(1) Вы не собираетесь ничего менять с помощью запроса SELECT. (2) Достаточно использовать «mysql_». Он больше не поддерживается. –

+0

$ query2 в строке 1 - ваш результирующий набор для перемещения. Строка 2 не имеет смысла. Нужно хешировать их пароли, и пароль проверяет их. И, как сказал Гордон, функции mysql * устарели. Используйте mysqli или pdo, многое из приведенного выше может быть [Видно в этой ссылке] (http://stackoverflow.com/a/32556010) – Drew

+0

Этот код должен захватить пароль в базе данных. Предполагается, что запрос выбора должен захватить пароль из базы данных из идентификатора пользователя. В другом запросе позже я меняю пароль. – Callum

ответ

0

С помощью операторов SELECT вы выбираете только строки. Чтобы изменить их, вам нужно ОБНОВИТЬ. Рассмотрите использование PDO, потому что функции mysql_ * устарели. Также попробуйте хешировать свои пароли и не хранить их в виде обычного текста.

Вам нужно что-то вроде этого:

$query2 = mysql_query("UPDATE adminusr SET password = '$new_password' WHERE id = '$idToChange'"); 

Использование PDO

//Make the connection using PDO 

try { 
    $conn = new PDO("mysql:host=$hostname;dbname=mysql", $username, $password); 
    echo "PDO connection object created"; 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
//Make your query 
$sql = 'UPDATE adminusr SET password = :new_password WHERE id = :id'; 
$stmt = $conn->prepare($sql); 
$stmt->execute(array(':new_password'=>$new_password, ':id'=>$idToChange)); 

EDIT отвечая на комментарий

Тогда вам нужно иметь также имя пользователя и пароль в поля формы. Итак, вам нужно четыре поля: username, oldPassword, newPassword, confirmNewPassword. Перед операцией обновления вам нужно выбрать пользователя с учетными данными username, oldPassword. Если вы найдете только одно, вы должны проверить соответствие newPassword и confirmNewPassword. Если совпадение, переходите к обновлению. В противном случае напечатайте некоторое сообщение об ошибке.

+0

Как я могу это сделать до того, как он обновит пароль, который проверяет, что старый пароль введен в соответствие с тем, который содержится в базе данных, в целях безопасности. Это выглядит так: http://prntscr.com/8v5cra – Callum

+0

Я обновил свой ответ относительно вашего комментария. –