2016-07-01 13 views
0

Ich möchte eine Zeile einfügen, aber keine Daten einfügen, die bereits vorhanden sind. Ist es möglich, das unten mit Sprint zu tun? Ich brauche Hilfe mit der Syntax dafür.mysql einfügen - überspringen Duplikate Syntaxfehler - sprintf (WHERE nicht vorhanden)

$insertSQL = sprintf(" 
    INSERT INTO post_view (trade_id, user_id, timestamp) 
    VALUES (%s, %s, %s) 
    SELECT trade_id, 
      user_id, 
      timestamp 
    FROM post_view 
    WHERE NOT EXISTS 
     (SELECT id 
     FROM post_view 
     WHERE trade_id = %s 
     AND user_id = %s)", 
GetSQLValueString($_GET['trade_id'], "int"), 
GetSQLValueString($_SESSION['user_id'], "int"), 
GetSQLValueString(time(), "int"), 
GetSQLValueString($_GET['trade_id'], "int"), 
GetSQLValueString($_SESSION['user_id'], "int")); 

mysqli_select_db($connection, $database_connection); 
$Result = mysqli_query($connection, $insertSQL) or die(mysqli_error($connection)); 

Derzeit unten Fehler bekommen

Sie haben einen Fehler in Ihrer SQL-Syntax; Sie in der Bedienungsanleitung für die richtige Syntax zu Ihrem MariaDB Server-Version entspricht in der Nähe von 'SELECT trade_id, user_id, Zeitstempel post_view WHERE NOT' zu verwenden, in Zeile 3

+0

Sollten Sie nach Ihrer Insert-Anweisung ein Semikolon werfen? –

Antwort

0

Eine INSERT-Anweisung kann entweder VALUES zum Einfügen literaler Werte oder eine SELECT -Klausel zum Abrufen der Werte aus einer Abfrage enthalten, aber nicht beides. Geben Sie die gewünschten Werte in die SELECT-Anweisung mit der speziellen Tabelle DUAL als Quelle ein.

$insertSQL = sprintf(" 
    INSERT INTO post_view (trade_id, user_id, timestamp) 
    SELECT %s, %s, %s 
    FROM DUAL 
    WHERE NOT EXISTS 
     (SELECT id 
     FROM post_view 
     WHERE trade_id = %s 
     AND user_id = %s)", 
GetSQLValueString($_GET['trade_id'], "int"), 
GetSQLValueString($_SESSION['user_id'], "int"), 
GetSQLValueString(time(), "int"), 
GetSQLValueString($_GET['trade_id'], "int"), 
GetSQLValueString($_SESSION['user_id'], "int")); 
+0

immer noch einen Fehler mit dieser – Jeff

+0

Entschuldigung, ich habe einen Bearbeitungsfehler gemacht und versehentlich die VALUES line. Versuchen Sie es jetzt. – Barmar

+0

perfekt - das ist die eine, schätze deine Hilfe – Jeff

0

dieses Versuchen:

INSERT INTO post_view (trade_id, user_id, timestamp) 
    VALUES (%s, %s, %s) 
    WHERE NOT EXISTS (SELECT * 
      FROM post_view 
      WHERE trade_id = %s 
      AND user_id = %s); 

Sie müssen möglicherweise zu Ändern Sie die Werte.

+0

Fehler :(Sie haben einen Fehler in Ihrer SQL-Syntax; überprüfen Sie das Handbuch, das Ihrer MariaDB-Serverversion für die richtige Syntax in der Nähe von "IF NOT EXISTS" entspricht (SELECT ID FROM post_view WHERE trade_id = – Jeff

+0

Sie können nicht verwenden, IF 'und' BEGIN' außerhalb einer gespeicherten Prozedur – Barmar

+0

Die Abfrage entsprechend geändert – nbirla

Verwandte Themen