0

クエリがあります

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

最初に UPDATE を実行
次の SELECT

1回のリクエストでこれを行う方法は?

4

2 に答える 2

5

使用方法stored procedures?1 つのコードステートメントから両方のクエリを実行することを探している場合は、それらをデータベース内のストアド プロシージャとして定義できます。

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 に答える