在唯一索引上检测已插入的数据mysql

时间:2011-04-19 22:46:29

标签: php mysql

如何检测插入的数据是否已存在?

到目前为止,我在表email

上有一个唯一索引
function insertEmail($email)
{
    mysql_query("INSERT IGNORE INTO `emails` (email, sent) VALUES ('$email', DATE( '0000-00-00' ))");
}

    if (insertEmail($emails)) {
        echo "<span class='success'>Successfully added " . $emails . " to the queue</span><br/>";
    } else {
        echo "<span class='fail'>Error we already sent " . $emails . " an invitation email.</span><br/>";
    }

即使emails中的数据不存在,它仍会返回:

Error we already sent example@gmail.com an invitation email. Successfully added...永远不会实现。

如何检测它是否存在?

3 个答案:

答案 0 :(得分:4)

insertEmail更改为

function insertEmail($email)
{
    mysql_query("INSERT IGNORE INTO `emails` (email, sent) VALUES ('$email', DATE( '0000-00-00' ))");
    return mysql_affected_rows() > 0;
}

答案 1 :(得分:2)

您的功能不会返回任何内容。

答案 2 :(得分:2)

我认为您收到错误的原因是因为您实际上没有从函数返回任何内容,因此insertEmail永远不会返回true。尝试添加一个catch,看看你是否仍然收到相同的结果,如:

function insertEmail($email)
{
    $result = mysql_query("INSERT IGNORE INTO `emails` (email, sent) VALUES ('$email', DATE( '0000-00-00' ))");
    $rows = mysql_affected_rows();
    return $rows
}