как избежать дублирования данных с помощью php - PullRequest
0 голосов
/ 06 ноября 2018

Как избежать дублирования данных при повторном вводе тех же данных? вместо этого я хочу выдать предупреждение:

извините, ваше имя пользователя было использовано

Я использую 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);
}

?>

Ответы [ 2 ]

0 голосов
/ 06 ноября 2018

Другое решение: убедитесь, что именно СУБД контролирует уникальность с ограничением UNIQUE. Затем проверьте возвращаемое значение mysqli_query для обработки ошибки.

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

Плюсы : только один запрос

Минусы : ошибка не обязательно связана с УНИКАЛЬНЫМ ограничением

0 голосов
/ 06 ноября 2018

Самый простой способ - сначала выбрать строки из mysql с помощью оператора select, а затем проверить, не является ли массив пустым.

$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);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...