У меня есть эти две таблицы:Как проверить другую таблицу перед обновлением?
// users
+----+-------+-----------------------+--------+
| id | name | email | active |
+----+-------+-----------------------+--------+
| 1 | peter | [email protected] | NULL |
| 2 | jack | [email protected] | NULL |
| 3 | john | [email protected] | NULL |
+----+-------+-----------------------+--------+
// activate
+----+---------+---------------------+
| id | post_id | random_string |
+----+---------+---------------------+
| 1 | 2 | fewklw23523kf |
+----+---------+---------------------+
Также у меня есть URL, как это:
http://example.com/activate.php?str=fewklw23523kf
Все, что я пытаюсь сделать:
- Сравнение
GET['str']
сrandom_string
столбец отactivate
стол - Проверка
active
столбец дляNULL
гдеid = post_id
.
И затем (если есть соответствует строке) устанавливают 1
active
столбца из таблицы users
. Как я могу это сделать?
$str = $_GET['str'];
$stm = $db_con->prepare("UPDATE users SET active = 1
WHERE (SELECT 1 FROM activate WHERE random_string = ?) t AND
(SELECT 1 FROM users WHERE t.post_id = id AND
active IS NULL) ");
$stmt->execute(array($str));
Мой запрос не работает, как ожидалось.
Спасибо upvote – stack
Как совет, можете ли вы, пожалуйста, сказать, что мой алгоритм правильный? * (для активации новой учетной записи) * – stack
Если я понимаю, что вы используете случайную сгенерированную строку, отправляемую по почте для пользователя, поэтому, когда пользователь нажимает на ссылку, которую вы отправляете, вы получаете это значение для включения соответствующего пользователя, если он не включен. логика правильная .. – scaisEdge