如果MySQL上已经存在,请不要复制VALUE

时间:2012-10-31 17:25:19

标签: php sql duplicates ignore

我一直在努力实现这一目标,但正如其他问题一样,我无法理解。我一直在阅读有关posibles解决方案的内容,但是我的代码中没有它们,或者如果他们这样做,我无法弄清楚如何或在何处使用它们。

我有一个用户发送记录的数据库。该数据库包含几个包含以下“名称,姓氏,电话”的表格。如果这些值中的任何一个是重复的,我希望我的代码能够识别并忽略提交表单如果数据库中已存在所有此值

这是我的代码:

        <?php

        $con = mysql_connect("HOST","USER","PASS");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }

        mysql_select_db("testdb", $con);
        $sql="INSERT INTO people (Name, LastName, Phone)
        VALUES
        ('$_POST[Name]','$_POST[LastName]','$_POST[Phone]')";

        if (!mysql_query($sql,$con))
          {
          die('Error: ' . mysql_error());
          }

        echo "Record Added";

        mysql_close($con);
        ?>

就像我说的那样,我已经尝试过但不能弄明白,我开始学习,所以请原谅我是否非常简单。非常感谢大家!!

3 个答案:

答案 0 :(得分:2)

mysql_*函数现在全部弃用,绝不应该使用。更改您的代码以执行以下操作:

//Set up a PDO connection to MySQL
$host = 'host_name';
$dbname = 'database_name';
$user = 'user_name';
$pass = 'user_pass';
try
{
    $DB = new PDO("mysql:host=$host;dbname=$dbname", $user, $pass); 
}
catch(PDOException $e)
{  
    echo $e->getMessage();  
}

//Determine whether the appropriate values have been passed.
if(isset($_POST['Name']))
{
    $name = $_POST['Name'];
}
else
{
    echo "You must provide a name!";
        exit; //This may not be what you want to do here, it's an example action
}

if(isset($_POST['LastName']))
{
        $name = $_POST['LastName'];
}
else
{
    echo "You must provide a last name!";
        exit; //This may not be what you want to do here, it's an example action
}

if(isset($_POST['Phone']))
{
        $name = $_POST['Phone'];
}
else
{
    echo "You must provide a phone number!";
        exit; //This may not be what you want to do here, it's an example action
}


//Set up the query using anonymous values
$sql="INSERT INTO people (Name, LastName, Phone) VALUES ('?','?','?')";
$sth = $DB->prepare($sql);

try
{
        //Attempt to execute the insert statement
        $sth->execute(array($_POST[Name], $_POST[LastName], $_POST[Phone]));
        echo "Record Added";

}
catch(PDOException $e)
{
        //If the insert failed, then you can handle the error, and determine
        //what further steps need to be taken.
        echo "Record Not Added";
}

这是另一个类似设置的问题,对您也很有用:

https://stackoverflow.com/a/10414922/1507210

答案 1 :(得分:0)

在插入

之前在表格中搜索
 <?php

        $con = mysql_connect("HOST","USER","PASS");
        if (!$con)
          {
          die('Could not connect: ' . mysql_error());
          }

        mysql_select_db("testdb", $con);

        $name =  mysql_real_escape_string($_POST[Name]);
        $LastName=  mysql_real_escape_string($_POST[LastName]);
        $Phone=  mysql_real_escape_string($_POST[Phone]);

         $search_res=mysql_query("SELECT * from people where Name='$Name' OR LastName='$LastName' OR Phone='$Phone'");

        if(mysql_num_rows($search_res) < 1){

             $sql="INSERT INTO people (Name, LastName, Phone)
             VALUES
                ('$Name','$LastName','$Phone')";

               if (!mysql_query($sql,$con))
              {
              die('Error: ' . mysql_error());
              }

        echo "Record Added";
       }else{
          echo "User Already exits";
       }

        mysql_close($con);
        ?>

答案 2 :(得分:0)

尝试这个简单的解决方案

$result = mysql_query("SELECT * FROM TABLE WHERE Column = 'value' ");

if( mysql_num_rows($result) < 1) {
    mysql_query("INSERT INTO table (column) VALUES ('value') ");
}