检查行是否已存在

adi*_*adi -2 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
    ));
}
Run Code Online (Sandbox Code Playgroud)

e4c*_*4c5 5

如果您只想在不存在时插入记录,只需使用INSERT IGNORE

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

$statement = $db->prepare($sql);
Run Code Online (Sandbox Code Playgroud)

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

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

当然,为了获得成功,您需要在感兴趣的列上使用唯一索引 word

  • 为此,"word"应该是主键或唯一键. (7认同)