2017-12-12 6 views
0

ユーザーが一致する電子メールとログインを提供したときに、データベースの「パスワード」レコードを更新するSQLクエリを作成しようとしています。私はこれを試してみて、達成するために、次のクエリを書いている:認識できない文のタイプ(IFの近く)

SET @password = 'password123'; 
SET @email = 'email'; 
SET @newPassword = 'pass54321'; 


IF `customer.Password` = @password WHERE `customer.Email` == @email 
BEGIN 
set `customer`.`Password` = @newPassword 
END 

私は「(IF近い)認識できない文のタイプ」を言って、エラーを取得します。誰かがこれを解決する方法を知っていれば、どんな助けもありがとう!私は非常にこれは完全に間違っているかもしれないので、SQLを使用して新です!

+1

MySQLでは、 'IF'はプログラミングブロック(ストアドプロシージャ、関数、トリガ)でのみ使用できます。 –

答えて

0

私はmysqlユーザーではなく、ドキュメント(https://dev.mysql.com/doc/)を見て、いくつかのルートがあります。私はあなたにアップサンプリングの方法を示しています(これはかなり涼しく、以前は見たことがありません)。

まず、検索の実行を支援し、選択基準を満たすために主キーを使用する必要があります。

# sample table with primary key 
    CREATE TABLE customer (customer_id int not null primary key, name VARCHAR(20), email VARCHAR(20), password VARCHAR(20)); 

    # seed with data 
    INSERT INTO customer VALUES(1,'John','[email protected]','password1'); 
    INSERT INTO customer VALUES(2,'Jane','[email protected]','passwordx'); 

    # set test params 
    SET @password = 'password1'; 
    SET @email = '[email protected]'; 
    SET @newPassword = 'pass54321'; 

    /* 
    depending on how the rest of the query is structured or if this 
     doesn't fit the requirements...you have the option to use IF EXISTS 

    This is using the 'ON DUPLICATE KEY UPDATE' to check if the record exists then performs an update if it does or an insert if it doesn't (aka upsert) 

    */ 
    INSERT INTO customer VALUES (1, 'John', '[email protected]', 'password1') 
    ON DUPLICATE KEY UPDATE password = @newPassword; 


    # test for password update 
    SELECT * FROM customer WHERE customer_id = 1 

テーブルに主キーがない場合は、! If EXISTSステートメントを使用する方が適切な場合があります。

組織内の誰かにタグを付け、自分が行っていることがコーディングの基準内であることを確認します。 MySqlのドキュメントサイトを使用してください - それはよく維持されているようです。

関連する問題