0

これが私の現在のクエリです

UPDATE `records` SET tester1 = '$user', tester1yn = '$pass' 

これを変えたいのは

UPDATE `records` SET
IF `tester1` IS NULL `tester1` = $user, AND `test1` = $pass
ELSE `tester2` = $user, `tester1yn` = '$pass'
WHERE `id` = $id

しかし、私が持っているように、これは機能しません。ネストされた問題がありますか、それとも間違った方法で行っていますか?

フィードバックに基づく更新

UDPATE records SET 
tester1 = if(tester1 IS NULL,'$user',tester1), 
tester1yn = if(tester1 is null, '$pass', tester1yn), 
tester2 = IF(tester1 is not null, '$user', tester2), 
tester2yn = IF(tester1 is not null,'$pass', tester2yn) 
where id = $id

まだそこにはありません。

4

3 に答える 3

2

このロジックは次のレイアウトにあるはずですが(私の意見では)、あなたは間違った方向に向かっているようなものです

試す:

UPDATE records 
SET
tester1 = if(tester1 IS NULL,$user,tester1),
tester1yn = IF(tester1 IS NULL,$pass,tester1yn),
tester2 = IF(tester1 IS NOT NULL, $user,tester2),
tester2yn = IF(tester1 IS NOT NULL,'$pass',tester2yn)
WHERE id = $id";
于 2013-05-01T20:06:31.230 に答える
2

私はこれをテストしなかったので、私を拘束しないでください。

UPDATE records 
SET 
    tester1 = CASE WHEN tester1 IS NULL THEN '$user' ELSE tester1 END,
    test1 = CASE WHEN tester1 IS NULL THEN '$pass' ELSE test1 END,
    tester2 = CASE WHEN tester1 IS NOT NULL THEN '$user' ELSE tester2 END,
    tester2yn = CASE WHEN tester1 IS NOT NULL THEN '$pass' ELSE tester2yn END
WHERE
    id = $id
于 2013-05-01T21:40:00.297 に答える
0

SQL では実行可能ですが、そのようなロジックはデータベース レベルで発生するべきではありません。ユーザーのログイン、認証、および管理 (これが目的のようです) は、コードで行う必要があります。

于 2013-05-01T20:06:04.120 に答える