mysql insert-跳过重复语法错误-sprintf(不存在)

杰夫

我想插入一行,但不插入已经存在的数据。可以通过sprint执行以下操作吗?我需要有关此语法的帮助。

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

目前低于错误

您的SQL语法有误;检查与您的MariaDB服务器版本相对应的手册以获取正确的语法,以在第3行的“ SELECT trade_id,user_id,timestamp FROM post_view WHERE NOT”附近使用

巴尔玛

一条INSERT语句要么必须VALUES插入文字值,要么SELECT要从查询中获取值子句,但不能同时具有两者。SELECT使用特殊表DUAL作为源,将所需的值放入语句中

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章