0

有一个查询

UPDATE users SET hash =: hash, num_try_incorrect_pass = 0 
WHERE email =: email; SELECT * FROM users WHERE email =: email

首先执行 UPDATE
下一个 SELECT

如何通过一个请求做到这一点?

4

2 回答 2

5

如何使用stored procedures?如果您正在寻找从一个代码语句执行两个查询,您可以将它们定义为数据库中的存储过程。

DELIMITER //
CREATE PROCEDURE ExecuteQueries(IN pEmail VARCHAR(50),
                    IN pHash VARCHAR(60))
  BEGIN
    UPDATE users SET hash=pHash, num_try_incorrect_pass = 0 WHERE email = pEmail;
    SELECT * FROM users WHERE email = pEmail;
  END //
DELIMITER ;

然后,您可以通过 php 代码以这种方式执行这两个语句:

$stmt = $dbh->prepare("CALL ExecuteQueries($sEmail,$sHash)");

更多信息:MySQL 存储过程入门

于 2012-11-13T11:34:52.713 回答
1

我不确定你想要什么。

您想在数据库上运行单个查询来更新和选择更新的行吗?如果是这样,这是无法做到的。您应该考虑创建一个 MySQL 函数来更新并返回后一个查询的结果集。这是有关如何使用 MySQL 创建函数和过程的文档

于 2012-11-13T11:33:06.930 回答