2011-09-27 6 views
0

나는 현재 내 PHP는 응용 프로그램에서 내 데이터베이스의 목록을 업데이트하려면이 쿼리를 사용 : 그것은 기본 키 자동 증가이기로INSERT IGNORE를 사용하지 않고 mysql에 행이 있는지 확인하는 방법은 무엇입니까?

$query = "INSERT INTO listings (title, description) VALUES ('$title','$description')"; 

이 명부 테이블은 'postid'열이 있습니다.

INSERT IGNORE를하고 postid를 확인하고 싶지 않습니다. 대신, 나는 테이블 구조를 동일하게 유지하고 $ title이 있는지 확인하고 싶으면 삽입하고 삽입하지 않으려합니다. 그렇다면

If ($title does not exist) { 
$query = "INSERT INTO listings (title, description) VALUES ('$title','$description')"; 
} 

, 내가 그걸 어떻게 작성합니다

/PHP는 것이다 mysql을 내가 어떻게 든 실행을 허용?

의견을 보내 주셔서 감사합니다.

INSERT INTO listings (title, description) VALUES ('$title','$description') 
FROM dual WHERE not exists (SELECT title FROM listings WHERE title = '$title'); 

또는 다음과 같이 할 수 있습니다 :

+2

"나는 싫어"--- 좋은 해결책을 원하지 않는 * 진짜 이유 *? – zerkms

+1

왜 'INSERT IGNORE'를 사용하지 않으시겠습니까? –

+0

글쎄, 문제는 목록을 제출하는 모든 사람들을 위해 테이블 ​​구조를 유지해야한다는 것입니다. 그것이 어떻게 쓰여졌는지 잘 작동합니다. 내 스크립트를 위해서, 나는 백도어 RSS 피드를 데이터베이스에 넣으려고하고있어 PostId만으로는 충분하지 않을 것이다. 만약 내가 연속 3 rss 피드를 잡으면, 그것은 내 RSS를 동일한 RSS 항목으로 채우고 단순히 자동으로 postid를 증가시킬 것이다. 따라서 .. "뒷문"항목에 대해서는 제목의 키를 눌러야합니다. 또한 RSS 피드에서 찾을 수 있기 때문에 guid 필드를 만들려고했는데 postidid가 기본 키이므로 고유 한 필드로 사용할 수 없습니다. – Andi

답변

2

당신은 dollowing을 할 수 주어진 제목 및 카운트 쿼리가 0을 반환하면 삽입 문을 실행하십시오.

$result = mysql_query('SELECT count(*) as total from listings where title="$title"'); 

$result = mysql_fetch_array($result);  

if($result['total'] == 0){ 
    $query = mysql_query("INSERT INTO listings (title, description) VALUES ('$title','$description')"); 
} 

하지만이 방법으로 데이터베이스를 조작하지 말 것을 강력히 권합니다. ORM이나 데이터베이스 클래스를 사용하는 것이 SQL 문장을 그 자리에 두는 것보다 낫습니다.

행운을 빈다.

+0

그랬습니다! 정말 고맙습니다! 나는 이것이 이상한 방법이라고 생각하지만, 하루에 한 번 cron을 통해 가끔씩 20 rss 항목을 삽입하는 것입니다. 그래서이 솔루션은 저에게 잘 돌아갑니다. 귀하의 솔루션에 많은 많은 많은 감사드립니다! 나는 그것을 이해하려고 밤새도록 노력했기 때문에 나는 기뻐했다! :) – Andi

0

이 시도에 이미있는 목록이 있는지

쿼리 데이터베이스 :

$result = mysql_query("UPDATE listings SET description = '$description' WHERE title ='$title';");   
if (mysql_affected_rows() == 0) { 
    $result = mysql_query("INSERT INTO listings (title, description) VALUES ('$title','$description');"); 
} 
+0

둘 다 시도했지만 어느 것도 작동하지 않았습니다. 시도해 줘서 고마워! – Andi

+0

첫 번째 예가 확실히 작동해야합니다. 올바른 위치에서 정확한 인용 부호를 사용하고 있는지 확인하십시오. (Hatake 게시 된 예제는 PHP를 둘러싸고 있지 않기 때문에) http://www.techonthenet.com/sql/insert.php – Chris

+0

나는 생각합니다. 당신이 준 링크는 mysql이 아니라 mysql이다. 아마도? 다시 시도했지만 제대로 작동하지 않는 것 같습니다. 나는 더 많이 시험 할 것이다! – Andi

관련 문제