更新选择

时间:2012-11-13 11:21:24

标签: php mysql

有一个查询

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

首先执行UPDATE
下一个SELECT

如何通过一个请求执行此操作?

2 个答案:

答案 0 :(得分: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 ;

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

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

了解更多信息:Getting Started with MySQL Stored Procedures

答案 1 :(得分:1)

我不确定你想要什么。

您希望在数据库上运行单个查询以更新并选择更新的行吗?如果是这样,就无法做到这一点。您应该考虑创建一个MySQL函数来更新并返回后一个查询的结果集。 Here's the docs on how to create functions and procedures with MySQL