Как вставить одно значение в таблицу при передаче переменной в запрос SQL с помощью PHP - PullRequest
1 голос
/ 23 февраля 2012

Я пытаюсь вставить новый пароль в столбец пароля моей таблицы пользователей. Я передаю две переменные в запрос SQL, новый пароль и идентификатор пользователя, но я не могу заставить его работать независимо от того, что я делаю. Вот SQL-запрос:

$sql = "INSERT INTO cryptuser  WHERE userID ='" . $userid ."' (passwordnew)
                    VALUES ('$passwordnew')  "; 

Вот моя форма:

<fieldset>

<legend>Change Password</legend>

<form action="changepass.php" method="POST">
        <label>Current Password :</label>
        <input type="password" name="password" /><br />
        <label>New Password :</label>
        <input type="password" name="passwordnew" /><br/>
        <label>Repeat New Password :</label>
        <input type="password" name="passwordnewRepeat" /><br/>
        <input class="signbutt" type="submit" value="Save"/><br />

</form>

Как только я смогу изменить пароль, хранящийся в таблице, я создам дополнительный SQL, который изменит пароль на новое значение, только если текущий введенный пароль совпадает с существующим паролем, затем JavaScript, чтобы убедиться, что введенный пароль введен повторно. соответствует новому паролю.

Ответы [ 4 ]

2 голосов
/ 23 февраля 2012

либо вы вставляете

$sql = "INSERT INTO cryptuser ( userID, password) VALUES ( 5, 's3cret')  "; 

или вы обновляете

$sql = "UPDATE cryptuser  SET password='s3cr3t' where userID =5"; 

И как всегда: СЛОВО ПРЕДУПРЕЖДЕНИЯ! не используйте опубликованные строки и вставляйте их непосредственно в базу данных, потому что вы открываете себя для SQL-инъекций вам нужно продезинфицировать струны. ищите условия для дальнейших инструкций.

изменить из-за комментария:

$sql = sprintf("UPDATE cryptuser  SET password='%s' where userID =%d" , $newpassword, $userId); 
1 голос
/ 23 февраля 2012

Попробуйте изменить свой SQL на это:

$sql = "INSERT INTO cryptuser(userID, passwordnew) 
        VALUES('$userid', '$passwordnew')";

Хотя, если это форма «Обновить пароль», имеет смысл использовать инструкцию SQL UPDATE, потому что запись в вашей таблице для текущего пользователя, вероятно, уже существует ...

$sql = "UPDATE cryptuser SET passwordnew = '$passwordnew' 
        WHERE userID = '$userid'";

Я предполагаю, что вы уже очищаете переменные, содержащие ваши значения, для предотвращения атак SQL-инъекций. Вам также следует изучить использование подготовленных заявлений

1 голос
/ 23 февраля 2012

Я думаю, вы должны взглянуть на руководство по SQL.

Прежде всего это звучит так, как будто вы хотите обновить значение, но вы используете INSERT. Ищите заявление ОБНОВЛЕНИЕ

Вторая проблема: ВСТАВИТЬ ГДЕ?

0 голосов
/ 23 февраля 2012

это неправильная проблема SQL, не вставляя проблему с переменными
правильный порядок запроса UPDATE будет

UPDATE cryptuser SET passwordnew='passwordnew'  WHERE userID=1; 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...