检查行是否已存在

时间:2016-08-04 11:43:29

标签: php mysql select sql-insert

我想检查我的sql表是否已经存在一行。 如果我的表中不存在数据,我想保存数据。我在选择查询中使用但它不起作用。

这是我的代码:

$sql = "INSERT INTO searchtable (word, position, count) VALUES (:word , :position, :count)";

$statement = $db->prepare($sql);


$temp="SELECT COUNT(word) AS searchtableFromword FROM  searchtable WHERE word=$title" ;

echo $temp;

if($temp== 0 )
{
    $statement->execute(array(
        'word' => $title,
        'position' => $fileNum,
        'count' => $titleVal
    ));
}

1 个答案:

答案 0 :(得分:5)

如果您只想在不存在的情况下插入记录,请使用INSERT IGNORE

$sql = "INSERT IGNORE INTO searchtable (word, position, count) VALUES (:word , :position, :count)";

$statement = $db->prepare($sql);

这将确保现有行保持不变,如果记录不存在,将插入新行。

  

如果使用IGNORE关键字,则执行时会出现错误   INSERT语句被忽略。例如,没有IGNORE,就是一行   复制表中的现有UNIQUE索引或PRIMARY KEY值   导致重复键错误,语句被中止。同   IGNORE,该行被丢弃,不会发生错误。忽略错误可能   虽然重复键错误没有,但生成警告。

当然,为了取得成功,您需要在感兴趣的列word

上使用唯一索引