如果输入存在,不要插入,否则插入PHP mysql

时间:2013-07-25 10:34:32

标签: php mysql if-statement insert

我刚开始使用php,我想知道是否有人可以提供帮助。 我有这个

$sql="INSERT INTO $tbl_name SET date='$mydate' , event='$myevent'";
$result=mysql_query($sql);

我需要知道如何让它看看事件是否存在,如果它确实存在,我需要它什么都不做,如果不存在则插入它!

3 个答案:

答案 0 :(得分:0)

将其拆分为2个查询:

1)检查事件是否存在。如果是,则不执行任何操作,否则插入新事件

2)继续查询。这样,在插入数据时,事件将显示

答案 1 :(得分:0)

尝试:

$query = mysql_query("SELECT $myevent from $tbl_name ")
$rows = mysql_num_rows($query)

if ($num_rows > 0) {
  // do nothing
}
else {
  $sql = "INSERT INTO $tbl_name SET date='$mydate' , event='$myevent'";
  $result = mysql_query($sql);
}

作为旁注:mysql_函数已弃用,建议切换为mysqliPDO

答案 2 :(得分:0)

这可以通过MySQL单独完成。

通过在桌面上运行以下MySQL命令为事件列设置唯一键:

CREATE UNIQUE INDEX `i_event` ON `TABLE_NAME_GOES_HERE` (`event`);

有关详细信息:http://dev.mysql.com/doc/refman/5.0/en/create-index.html

对于您希望在$ tbl_name变量中看到的每个可能的表执行此操作。

然后,更改您的PHP查询:

$sql="INSERT IGNORE INTO $tbl_name SET date='$mydate' , event='$myevent'";
$result=mysql_query($sql);

有关INSERT IGNORE的更多信息:http://dev.mysql.com/doc/refman/5.5/en/insert.html

INSERT IGNORE只是按照它的说明...它会尝试插入行,除非它验证失败(在这种情况下,从你声明HAS的索引是唯一的)。