如果是在sql插入中

时间:2015-04-27 02:46:00

标签: php mysql if-statement

我想创建一个代码,如果数据已经存在于数据库中并且用户再次插入相同的输入并发送到数据库,则sql命令将检测它并且不允许重复数据进入数据库。添加信息,我没有主表用于我的表。这是我的代码。

$sql="INSERT IGNORE INTO tempahan(Nama,Aktiviti,No_HP,Unit,Tempat,Tarikh_Penggunaan,Masa_Mula,Masa_Akhir,Email) VALUES('$_POST[name]','$_POST[Aktiviti]','$_POST[number]','$_POST[unit]','$_POST[tempat]','$_POST[tarikh]','$_POST[masa1]','$_POST[masa2]','$_POST[email]')";

       $_POST['tempat'] = $data['Tempat'] ;
       $_POST['masa1'] = $data['Masa_Mula']; 
       $_POST['masa2'] = $data['Masa_Akhir'];  if($_POST['tempat'] != $data['Tempat'] && $_POST['masa1'] != $data['Masa_Mula'] && $_POST['masa2'] != $data['Masa_Akhir']) {
         echo 'the booking was successful.';
         }
         else
         { echo 'the place already occupied.';}

我是sql和php的新手。因此,我真的需要你们所有人的帮助。我已经看到了另一个相同的问题。但是,每个解决方案都提供了我的失败。

3 个答案:

答案 0 :(得分:1)

$query = $db->query( // query your table );

 $array = array('name'=>$_POST['name'],
                 'address'=>$_POST['address']);

while ($row = mysqli_fetch_all($query)) {

    $diff = in_array($array, $row);
    {
        if(empty($diff))
        {
                // insert data into table
        }
        else{
            //data already exist
        }
    }
}

答案 1 :(得分:1)

执行此操作的正确方法是在您认为唯一的字段上强制执行unique constraint。你可以这样做。

alter table tempahan
  add unique (Tempat, Masa_Mula, Masa_Akhir)

然后,您的数据库将拒绝任何插入重复数据的尝试。插入前无需事先检查。

Here是一个非常基本的演示,说明当您使用此唯一约束设置表时会发生什么,然后尝试插入重复数据。简而言之:它是错误的。

答案 2 :(得分:0)

// first check existing recors on the database
    $select = "SELECT `Tempat`, `Masa_Mula`, `Masa_Akhir` 
        FROM  `tempahan`
        WHERE `Tempat` = {$_POST['tempat']} 
        AND `Masa_Mula` = {$_POST['masa1']} 
        AND `Masa_Akhir` = {$_POST['masa2']}";

    $result = mysql_query($select, $dbconnection);
    // check if the have existing records
    // the query fetching depends on your work
    // but this is a simple way only
    // but have more examples on the internet
    // to make query more better and ellegant
    if (mysql_num_rows($select) > 0) {
        echo 'the place already occupied.';
    } else {
        // insert new record
        $sql="INSERT IGNORE INTO tempahan(Nama,Aktiviti,No_HP,Unit,Tempat,Tarikh_Penggunaan,Masa_Mula,Masa_Akhir,Email) 
        VALUES(
            '$_POST[name]',
            '$_POST[Aktiviti]',
            '$_POST[number]',
            '$_POST[unit]',
            '$_POST[tempat]',
            '$_POST[tarikh]',
            '$_POST[masa1]',
            '$_POST[masa2]',
            '$_POST[email]')";
        echo 'the booking was successful.';
    }