2017-09-07 1 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') 

는 일반적으로 일했다. NOT 내가 SQL 구문 오류가 있지만 내가 그것을 볼 수있는 경우 내가 추가 할 때 내가 그 가치

을 테스트 할 때

또한 코드는

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'을 사용할 수 있습니다. –