2017-09-07 15 views
-1

SQL構文にエラーがありますが、表示されません。私はちょうどそれを使用している場合MySQL「IF NOT EXISTS」

$query  = "IF NOT EXISTS (SELECT id FROM Provider 
       WHERE name=('$filename')) 
       INSERT INTO Provider (Name) VALUES ('$filename')"; 

$query_result = mysqli_query($connect, $query); 

コード

INSERT INTO Provider (Name) VALUES ('$filename') 

が正常に働いていました。私は、そうでない場合は、私はSQL構文エラーがありますが、私はそれを見ることができないEXISTSを追加すると、私はその値

を試験したとき

またコード

SELECT id FROM Provider WHERE name=('$filename') 

はうまく働きました! アイデア

+0

あなたは単純にそれを行うことができないので、構文エラーがあります。 –

+0

"存在しなければ"あなたに何がありますか? – SilverSurfer

答えて

1

この場合、NOT EXISTSは使用できません。代わりに次のクエリを実行してください。

INSERT INTO Provider (Name) 
SELECT filename 
FROM (SELECT ('$filename') AS filename) AS t 
WHERE NOT EXISTS (SELECT id 
        FROM Provider 
        WHERE name=('$filename') 
+0

論理的なエラーがあります。私は今、実際に私はIDを選択する必要はありません参照してください。私はテーブルプロバイダーを持っていて、ファイル名はプロバイダー名です。名前が既にテーブルに入っているかどうかをチェックし、そうでなければレコードを入れる、そうでなければスキップするだけです。私の場合、ファイル名が既にテーブルに存在するかどうか尋ねたい。 – Milos

+0

'NOT EXISTS'演算子の' SELECT'節のフィールド、この場合の 'id'は何の役割も果たしません。代わりに 'SELECT 1'を使用している可能性があります。 –

関連する問題