2016-07-03 193 views
0

嘿傢伙重複的數據,我需要你的幫助,因爲我在PHP很新。我查看了其他人在此之前發佈過的類似問題,但它沒有幫助我,因此我正在創建一個新問題。PHP - 防止被插入MySQL數據庫

<?php 
    $servername = "localhost"; 
    $name = "root"; 
    $password = "root"; 
    $dbname = "my computer"; 

    // Create connection 
    $conn = mysqli_connect($servername, $name, $password, $dbname); 
    // Check connection 
    if (!$conn) { 
     die("Connection failed: " . mysqli_connect_error()); 
    } 



    $query = "SELECT * FROM `booked` WHERE 

    `name` = '{$username}' 
    `date` = '{$date}' 
    `computer_id` = '{$select3}' 
    `start_time` = '{$select1}' 
    `end_time` = '{$select2}' 
    `room` = '{$room}' 

    "; 

    $result = mysqli_query($conn, $query); 



    if (mysqli_num_rows ($result) > 1) 
    { 

    echo "data already exists"; 

    } 




    else 
    { 
    $sql = "INSERT INTO booked (date, computer_id, name, start_time, end_time, room) 
     VALUES ('$date', '$select3', '$username', '$select1', '$select2', '$room')"; 



    if (mysqli_query($conn, $sql)) { 
     echo "New record created successfully"; 
     } else { 
     echo "Error: " . $sql . "<br>" . mysqli_error($conn); 
     } 

    mysqli_close($conn); 

    } 
    ?> 

這是我的代碼,它將變量值存儲在表格「預訂」內的特定錶行中。

我要確保MySQL的拒絕「黃牌警告」,如果相同的值已經在數據庫中存在的數據庫表中的值的插入。注意:所有的值必須相同。如果除了一個值,所有的值都是相同的,那麼系統仍然應該接受插入。如果發現重複的值應該回聲「無法插入數據。重複發現價值」提前

回答

1

這兩個應該工作

三江源。

ALTER TABLE `tableName` ADD UNIQUE `unique_index`(`columnName1` ,`columnName2`); 

OR(MySQL版本32年5月5日)

ALTER TABLE `tableName` ADD UNIQUE (`columnName1` ,`columnName2`); 

OR

如果重複的值都發現了它應該回聲 「無法插入數據。重複發現價值」

您可以先檢查數據是否已經存在,然後繼續進行INSERT查詢。 PS。這也可以使用子查詢完成。

方式一:

$query = "SELECT * FROM `tableName` WHERE `columnName1` = '{$val1}'"; 

$result = mysqli_query($conn, $query); 

if (mysqli_num_rows ($result) > 1) 
{ 
//data already exists 
} 
else 
{ 
//do your INSERT query here 
} 
+0

您好,我厭倦了你最後的代碼,但它不工作?我已經更新了我上面的源代碼,你可以檢查使用你的代碼正確 –

+0

那你的意思是,如果即時地看到'它沒有work' ? '回聲'你的查詢,看看什麼是真正被提取/發送。 – user5173426

-1

更先進的系統應該是PDO。

去看看PDO起來,以及如何使用它,它是當你得到它會相當驚人。