如何使用php避免重复数据

uqcuzwp8  于 2021-06-18  发布在  Mysql
关注(0)|答案(2)|浏览(374)

当我们再次输入相同的数据时,如何避免重复数据?相反,我想发出一个警告:
抱歉,您的用户名已被使用
我使用的是php脚本,我这样做是为了克服重复数据,但结果有意外的错误。
这是我的密码,如果你愿意请改正。谢谢

<?php

if (isset($_POST['submit'])) {

    $npm_siswa = $_POST['npm_siswa'];
    $nama_siswa = $_POST['nama_siswa'];
    $bidangst_siswa = $_POST['bidangst_siswa'];
    $ipk_siswa = $_POST['ipk_siswa']; 

    $query ="INSERT INTO class(npm_siswa, nama_siswa, bidangst_siswa, ipk_siswa) VALUES('$npm_siswa','$nama_siswa','$bidangst_siswa','$ipk_siswa')";

    $insert_data = mysqli_query($con, $query);
    $goto = header('location: input_data.php');
    if (headers_sent($goto) == true) {
        exit();
    }
}

$checking = "SELECT * FROM class WHERE npm_siswa ='$npm_siswa'";

$process = mysqli_query($con, $checking) or die(mysqli_error());
while($row_filter = mysqli_fetch_assoc($process)) {
    $kelasId = $row_filter['kelasId'];
    $npm_siswa = $row_filter['npm_siswa'];
    $nama_siswa = $row_filter['nama_siswa'];
    $bidangst_siswa = $row_filter['bidangst_siswa'];
    $ipk_siswa = $row_filter['ipk_siswa'];
}

if (mysqli_num_rows($process) > 0) {
    echo "maaf nama anda sudah digunakan"; 
} else {
    $data = "INSERT INTO class(npm_siswa, nama_siswa, bidangst_siswa, ipk_siswa) VALUES('$npm_siswa','$nama_siswa','$bidangst_siswa','$ipk_siswa')";
    $check = mysqli_query($con, $data);
}

?>
h7wcgrx3

h7wcgrx31#

简单的方法是首先使用select语句从mysql中选择行,然后检查数组是否为空。

$checking = "SELECT * FROM class WHERE npm_siswa ='$npm_siswa'";

$process = mysqli_query($con, $checking) or die(mysqli_error());

if(empty($process)) {
    echo "maaf nama anda sudah digunakan"; 
} else {
    $data = "INSERT INTO class(npm_siswa, nama_siswa, bidangst_siswa, ipk_siswa) VALUES('$npm_siswa','$nama_siswa','$bidangst_siswa','$ipk_siswa')";
    $check = mysqli_query($con, $data);
}
rhfm7lfc

rhfm7lfc2#

另一种解决方案:确保dbms控制唯一性,并使用 UNIQUE 约束。然后测试你的 mysqli_query 的返回值来处理错误。

$process = mysqli_query($con, $checking);
if (!$process)
{
   // Handle your error
}

优点:只有一个查询
缺点:错误不一定是由于唯一约束造成的

相关问题