php - 防止重复数据插入mysql数据库

时间:2016-07-03 21:15:36

标签: php mysql sql-server database

嘿伙计们,我需要你的帮助,因为我是非常新的PHP。我查看了其他人在此之前发布的类似问题,但这对我没有帮助,所以我创建了一个新问题。

    <?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拒绝在“已预订”的数据库表中插入值。注意:所有值必须相同。如果除了一个值之外所有值都相同,则系统仍应接受插入。如果找到重复值,则应回显“无法插入数据。找到重复值”

提前谢天谢地

2 个答案:

答案 0 :(得分:1)

这两个都应该有用。

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

OR(mysql版本5.5.32)

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

OR

如果发现重复值,则应回显&#34;无法插入数据。找到重复值&#34;

您可以先检查数据是否已经存在,然后继续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
}

答案 1 :(得分:-1)

更先进的系统应该是PDO。

看看PDO,以及如何使用它,当你开始使用时它真是太棒了。