1

IF NOT EXISTS ステートメントがあります。存在しない場合は、INSERT ステートメントが続きます。IF EXISTS PHPで解釈できるように、何が返されるか、返される可能性があるかを理解する必要があります。

それで:

IF NOT EXISTS (SELECT id FROM users WHERE lname='SMITH')
INSERT INTO users (lname='SMITH')

ネガティブは結果を返さないので、標準を使用できると思いました

if ($result){echo "record added";}
else {echo "duplicate - no record added";}

しかし、それは起こっていることではなく、必要なものを達成する方法がわかりません-何か提案はありますか?

ご静聴ありがとうございました。

4

2 に答える 2

1

次のようなものを試すことができます:

SET NOCOUNT ON
IF NOT EXISTS (SELECT id FROM users WHERE lname='SMITH')
  BEGIN
    INSERT INTO users (lname) VALUES('SMITH')
    SELECT 1
  END
ELSE
  SELECT 0

返されたスカラー = 0 または 1 を確認しますか?

于 2012-04-24T20:31:57.443 に答える
1

どちらの場合も$result、コマンドが正常に実行された場合の応答が返され、それ以上は返されません。 INSERT行を生成IFせず、一致する条件を持たないステートメントも生成しません。

SELECT SCOPE_IDENTITY()挿入された ID を取得したい場合に使用でき$result、行が返されたかどうかを確認できます。

于 2012-04-24T20:32:23.923 に答える