0

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

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

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

4

3 回答 3

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);

有关插入忽略的更多信息:http: //dev.mysql.com/doc/refman/5.5/en/insert.html

INSERT IGNORE 只是按照它所说的那样做......它将尝试插入该行,除非它未能通过验证(在这种情况下,来自您声明的索引必须是唯一的)。

于 2013-07-25T10:46:14.317 回答
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_函数已被弃用,建议切换到mysqlior PDO

于 2013-07-25T10:41:04.997 回答
0

将其拆分为 2 个查询:

1)检查事件是否存在。如果是,则什么也不做,否则插入一个新事件

2) 继续您的查询。这样,在插入数据时事件就会存在

于 2013-07-25T10:38:37.447 回答