如何防止使用php在mysql中插入两次相同的记录

时间:2013-12-16 07:05:28

标签: php mysql

以下是我为不插入相同数据而编写的代码 我想如果记录存在于mysql中那么它应该向我显示错误消息,该记录已经存在,其他部分应该将记录插入数据库但它不工作 任何人都可以帮助我 帮助将受到高度赞赏

function addcontact()
    {
        if(isset($_POST['addContact']))
        {
            $officeName = strip_tags($_POST['office_name']);
            $contactName = strip_tags($_POST['contactName']);
            $contactNo = strip_tags($_POST['contactNo']);
            $digitalNo = strip_tags($_POST['digitalNo']);
        $mobileNo = strip_tags($_POST['mobileNo']);

        $check="SELECT * FROM contacts WHERE office_name = '$officeName'";
        if(mysql_num_rows($check) != 0)
         {
            echo "Already in Exists<br/>";
        }else
                     {          
                        $sql = mysql_query("INSERT INTO contacts (office_name, contact_no, 
                          digital_no, mobile_no) VALUES 
                         ('$contactName','$contactNo','$digitalNo','$mobileNo')") or die(mysql_error());
        if($sql)
        {
            header("Location: index.php?admin&done");  exit;
        }
        else
        {
            header("Location: index.php?admin&failed");  exit;  
        }
    }
}
}

4 个答案:

答案 0 :(得分:1)

你在这里犯了错误。

$check="SELECT * FROM contacts WHERE office_name = '$officeName'";
    if(mysql_num_rows($check) != 0)
     {
        echo "Already in Exists<br/>";
    }

只需添加类似

的mysql_query
$check=mysql_query("SELECT * FROM contacts WHERE office_name = '$officeName'");
    if(mysql_num_rows($check) != 0)
     {
        echo "Already in Exists<br/>";
    }

或者您也可以使用

    $name=$_POST['username'];

$q="select * from login where name='$name' ";
$rs=mysql_query($q);
if(mysql_fetch_row($rs)>0)
{
    echo "already exist";
}
else
{
    $msg="done";
}

答案 1 :(得分:1)

添加ON Duplicate KEY Update。这样您就不需要检查记录是否已经存在,这意味着您不需要额外的选择查询来检查。如果它存在,没有任何反应。

INSERT INTO contacts (office_name, contact_no, digital_no, mobile_no) 
VALUES ('$contactName','$contactNo','$digitalNo','$mobileNo')
ON DUPLICATE KEY UPDATE office_name = office_name

并将office_name设置为主键或唯一索引。

答案 2 :(得分:0)

缺少一步,您的第一个查询未执行,请尝试: -

function addcontact()
{
    if(isset($_POST['addContact']))
    {
        $officeName = strip_tags($_POST['office_name']);
        $contactName = strip_tags($_POST['contactName']);
        $contactNo = strip_tags($_POST['contactNo']);
        $digitalNo = strip_tags($_POST['digitalNo']);
    $mobileNo = strip_tags($_POST['mobileNo']);

    $check= mysql_query("SELECT * FROM contacts WHERE office_name = '{$officeName}'");
    if(mysql_num_rows($check) != 0)
     {
        echo "Already in Exists<br/>";
    }else
                 {          
                    $sql = mysql_query("INSERT INTO contacts (office_name, contact_no, 
                      digital_no, mobile_no) VALUES 
                     ('$contactName','$contactNo','$digitalNo','$mobileNo')") or die(mysql_error());
    if($sql)
    {
        header("Location: index.php?admin&done");  exit;
    }
    else
    {
        header("Location: index.php?admin&failed");  exit;  
    }
}

} }

答案 3 :(得分:0)

您可以从数据库端处理它。写一个存储过程,首先检查天气记录是否在数据库中,如果存在,则忽略它并返回文本“Record already exists”,如果不存在则将其插入表中。在mysql中使用条件语句。