2017-05-16 2 views
0

ich PostgreSQL bin mit Daten zu bekommen, und ich will es in MySQL einzufügen. Ich habe ein PHP-Skript, das es mir erlaubt, die Daten zu bekommen, zu prüfen, ob sie wiederholt werden und dann in MySQL DB einfügen. Problem ist, dass anstatt nur die nicht vorhandenen Daten einzufügen, eine zufällige Zeile eingefügt wird und nichts anderes eingefügt wird.Insert into wenn nicht existieren 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."')"); 

    } 

die Variablen $episode_col und $episode_values erhalten Daten aus einem Array $episode durch implodieren genannt:

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

Mögliche Duplikat [MySQL: Rekord Einfügen, wenn nicht in der Tabelle vorhanden ist] (http://stackoverflow.com/questions/3164505/mysql-insert-record-if- not-exists-in-table) – maximkou

+0

Ich habe den Beitrag schon einmal gesehen, aber wenn ich versuche, die NOT EXIST-Abfrage auszuführen, heißt es, dass sie in phpMyAdmin nicht funktioniert – Mika

Antwort

1

Dieser Sie Code.

IF Anweisungen werden für Vergleiche verwendet, Sie holen nur das Array und es gibt keine Bedingung in Ihrer IF Aussage. Sie müssen die Anweisungen korrigieren, um die Spalten und ihre jeweiligen Werte zu erhalten.

$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."')"); 

    } 

Sie können versuchen, zu WHERE EXISTS oder WHERE NOT EXISTS zu verwenden.

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); 

Für weitere Informationen: https://dev.mysql.com/doc/refman/5.7/en/exists-and-not-exists-subqueries.html