如果不存在记录,则执行SQL插入

如果不存在记录,则执行SQL插入,sql,Sql,我试图通过PHP将几个值插入到表中,如下所示: $sql = "INSERT INTO table1(Field1, Field2) Values (?, ?) "; $stmt = $db-> prepare($sql); $stmt->execute(array($field1, $field2)); $stmt->closeCursor(); 字段1是主键 但是,如果表中还没有字段1的记录实例,我只

我试图通过PHP将几个值插入到表中,如下所示:

$sql = "INSERT INTO table1(Field1, Field2)
            Values (?, ?)
            ";
    $stmt = $db-> prepare($sql);
    $stmt->execute(array($field1, $field2));
    $stmt->closeCursor();
字段1是主键

但是,如果表中还没有字段1的记录实例,我只想插入字段1。例如,如果已经有一条字段1记录为“orange”,则如果要求插入另一条“orange”,则不应插入另一条“orange”

我觉得这一定很简单,但我正在尝试的东西似乎都不管用。

试试这个

INSERT INTO table1(Field1, Field2)
SELECT @field1, @field2 from dual
WHERE not exists (select 1 from table1 where field1 = @field1);
--@field1, @field2 are your parameter values
试试这个

INSERT INTO table1(Field1, Field2)
SELECT @field1, @field2 from dual
WHERE not exists (select 1 from table1 where field1 = @field1);
--@field1, @field2 are your parameter values

那么先检查记录是否存在?@RS它不允许我评论,所以很抱歉将此作为答案发布。嗯,我尝试了,它只插入了一行,所有内容都是空白的。这是我的实际代码:插入到表1SKU中,标题选择atSKU,从不存在的双通道中选择ATITLE从表1中选择1,其中SKU=@SKU;$stmt=$db->prepare$sql;$stmt->executearray$SKU,$id;$stmt->closeCursor;$stmt->execute中的$SKU和$id是在foreach循环中创建的变量。@user2201011:您应该添加一个标记,说明您正在使用哪个RDBMS。使用mysql/phpSo首先检查记录是否存在?@RS它不允许我评论,因此很抱歉将此作为答案发布Hmmm,我试过了,它只插入了一行,所有内容都是空白的。这是我的实际代码:插入到表1SKU中,标题选择atSKU,从不存在的双通道中选择ATITLE从表1中选择1,其中SKU=@SKU;$stmt=$db->prepare$sql;$stmt->executearray$SKU,$id;$stmt->closeCursor;$stmt->execute中的$SKU和$id是在foreach循环中创建的变量。@user2201011:您应该添加一个标记,说明您正在使用哪个RDBMS。使用mysql/php