PHP MySQL быстрее способ выбрать заявление для последующего обновления?

У меня есть следующий код:

$result = mysqli_prepare($con, "select pass from signin where domain = ? and username = ? for update");
//Check if record is available
//Do some checking here that pass is correct
//Then I need a new hash for the password so I use (after making the new hash)
$resultnew = mysqli_prepare($con, "update signin set pass = ? where domain = ? and username = ?");

Так что все работает здесь хорошо!

Но что мне не нравится, так это то, что есть время, когда оператор обновления должен снова искать запись с доменом и паролем, поскольку у меня уже есть запись из первого оператора выбора.

Есть ли способ напрямую обновить проход из первого оператора выбора после выполнения проверки? Короче говоря, есть что-то вроде этого или я должен придерживаться того, что я делаю:

password = select pass from signin where domain = ? and username = ?;
//checking and making new hash
set password = $newhash

0

Решение

Вы должны использовать уникальный идентификатор для каждой строки вашей базы данных. Это должен быть индекс, желательно с автоматическим приращением. Пример такой таблицы:

CREATE TABLE IF NOT EXISTS `my_table` (
`id` int(11) NOT NULL AUTO_INCREMENT,
<other columns>
PRIMARY KEY (`ID`),
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=1;

Если вы возвращаете идентификатор вместе с паролем, вы можете использовать этот идентификатор, чтобы напрямую выбрать правильную строку для вашей команды UPDATE.

UPDATE signin
SET pass = ?
WHERE id = ?

Поскольку ID — ваш основной индекс, это будет очень быстро.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]