我想检查我的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
));
}
答案 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