2012-06-13 6 views
2

мне нужно сделать обновленный запрос следующим образом:Есть ли способ узнать, обновляется ли строка?

"UPDATE users SET email_code='1' WHERE id=".$id." AND email_code='".$email_code."'"; 

и если строка обновляется, а затем установите $_SESSION['verified']=1

Так что я должен знать, если эта строка обновляется.

Есть ли способ узнать это? Или мне нужно сделать первый запрос SELECT, чтобы узнать, существует ли эта строка?

+0

вам нужен наблюдатель, который стреляет какой-то случае, если какой-либо из строк таблицы была обновлена ​​ли? Или вы просто хотите проверить, было ли 'UPDATE' успешным? Или вы хотите вставить, если строка не существует для обновления? – feeela

ответ

1

Вы можете установить триггер в MySQL в UPDATE для таблицы users и MySQL запустить скрипт для установки некоторой переменной, которая будет обращаться к этому сеансу. Но это было бы ненужной огромной болью в тылу.

Я бы создал AJAX heartbeat на странице, необходимой для проверки, и посмотреть, существует ли эта строка, а затем обновить необходимый сеанс. Чище это.

6

Вы можете использовать mysqli_affected_rows, чтобы узнать, были ли изменены какие-либо строки после выполнения запроса.

if(mysqli_affected_rows($link) > 0){ 
    // do session stuff 
} 
+4

Или [rowCount()] (http://www.php.net/manual/en/pdostatement.rowcount.php) из библиотеки PDO, если это его выбор.) – raina77ow

+0

Таким образом, я должен использовать класс Mysqli. Или нет ? – xRobot

+0

Вы свободны для пользователя, какой бы класс вы ни хотели, если вы используете 'mysql_ *', тогда вы можете использовать' mysql_affected_rows', если хотите, но это не рекомендуется. –

1

Среди mysql_ и mysqli_ семейства функций есть mysqli_affected_rows и mysql_affected_rows. Я не очень хорошо знаком с PDO, но это наверняка есть нечто похожее.

Смежные вопросы