2017-05-16 4 views
0

PostgreSQL을 사용하여 데이터를 가져오고 MySQL에 삽입하려고합니다. 나는 데이터를 얻고, 반복적으로 점검하고, MySQL DB에 삽입 할 수있는 PHP 스크립트를 가지고있다. 문제는 존재하지 않는 데이터 만 삽입하는 대신 하나의 임의의 행을 삽입하고 아무것도 삽입하지 않는다는 것입니다.존재하지 않는 경우 삽입 MySQL

$check_for_episode = mysqli_query($conn, "SELECT DISTINCT house_number,number FROM episode WHERE house_number LIKE '".$house_number."' AND number = ".$episode_id_pg." LIMIT 1"); 

    if (mysqli_fetch_array($check_for_episode)){ 

    }else{ 
    $insert_episode = mysqli_query($conn, "INSERT INTO episode(".$episode_col.")VALUES('".$episode_values."')"); 

    } 

변수 $episode_col$episode_values는 배열에서 데이터가 내파를 통해 $episode라는 얻을 :이 코드

$episode_col = implode(", ", array_keys($episode)); 
$episode_values = implode("', '", array_values($episode)); 
+0

의 사용 가능한 복제 [MySQL은 :하지가 테이블에있는 경우 레코드를 삽입 (http://stackoverflow.com/questions/3164505/mysql-insert-record-if- 테이블에 존재하지 않음) – maximkou

+0

전에 게시판을 보았지만 NOT EXIST 쿼리를 시도하면 phpMyAdmin에서 작동하지 않는다고 표시됩니다 – Mika

답변

1

.

IF 문을 비교에 사용하면 배열을 가져 오는 중입니다. IF 문에는 조건이 없습니다. 명령문을 수정하여 열과 해당 값을 가져와야합니다.

$check_for_episode = mysqli_query($conn, "SELECT DISTINCT house_number,number FROM episode WHERE house_number LIKE '".$house_number."' AND number = ".$episode_id_pg." LIMIT 1"); 

    if (mysqli_fetch_array($check_for_episode)){ 

    }else{ 
    $insert_episode = mysqli_query($conn, "INSERT INTO episode(".$episode_col.")VALUES('".$episode_values."')"); 

    } 

너무 WHERE EXISTS 또는 WHERE NOT EXISTS를 사용하려고 할 수 있습니다. 더 많은 정보를 들어

SELECT DISTINCT column1 FROM table1 
    WHERE EXISTS (SELECT * FROM table2 
       WHERE table2.column1 = table1.column1); 

SELECT DISTINCT column1 FROM table1 
    WHERE NOT EXISTS (SELECT * FROM table2 
        WHERE table2.column1 = table1.column1); 

: https://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html