gpt4 book ai didi

php - 我需要防止输入重复的数据。我基于以下几点;名字、姓氏和电话

转载 作者:行者123 更新时间:2023-11-29 16:49:13 27 4
gpt4 key购买 nike

我需要一个函数来根据以下字段检查重复条目:first_name、last_name 和 tel我尝试过浏览论坛,但似乎找不到帮助。

<?
function do_data_entry($data){
global $conn;
$sql = "INSERT INTO entry_details (reg_type,mem_id,title,first_name,middle_name,last_name,address,tel,email,position,place_work,mem_cat,mem_fee,sub_date,next_date_sub,district,mem_status,mem_status_reason) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?)";
$stmt = $conn->prepare($sql);
$stmt->bind_param('ssssssssssssssssss',$reg_type,$mem_id,$title,$first_name,$middle_name,$last_name,$address,$tel,$email,$position,$place_work,$mem_cat,$mem_fee,$sub_date,$next_date_sub,$district,$mem_status,$mem_status_reason);

//这会选择从代码中发布的数据(以下面的不同形式)

if(is_loggedIN() == 'user'){
redirect('../index.php');
}else if(is_loggedIN() == 'admin'){
if(isset($_POST['add_entry'])){
$data['reg_type'] = $_POST['reg_type'];
$data['mem_id'] = $_POST['mem_id'];
$data['title'] = $_POST['title'];
$data['first_name'] = $_POST['first_name'];
$data['middle_name'] = !isset($_POST['middle_name']) ? "" : $_POST['middle_name'];
$data['last_name'] = !isset($_POST['last_name']) ? "" : $_POST['last_name'];
$data['address'] = !isset($_POST['address']) ? "" : $_POST['address'];
$data['district'] = $_POST['district'];
$data['tel'] = !isset($_POST['tel']) ? "" : $_POST['tel'];
$data['email'] = !isset($_POST['email']) ? "" : $_POST['email'];
$data['position'] = !isset($_POST['position']) ? "" : $_POST['position'];
$data['place_work'] = !isset($_POST['place_work']) ? "" : $_POST['place_work'];
$data['mem_cat'] = $_POST['mem_cat'];
$data['mem_fee'] = $_POST['mem_fee'];
$data['sub_date'] = $_POST['sub_date'];
$data['next_date_sub'] = $_POST['next_date_sub'];
$data['mem_status'] = $_POST['mem_status'];
$data['mem_status_reason'] = $_POST['mem_status_reason'];
if(do_data_entry($data)){
$_SESSION['message'] = "Entry created successfully";
redirect('data_entry.php');
}else{
$_SESSION["message"] = "User already exists. Try different name";
}
}
}else{
redirect('../login.php');
}

最佳答案

最简单直接的解决方案是创建一个由first_name + last_name + tel 列组成的主键。之后,当您尝试插入完全相同的组合时,数据库(无论是什么)约束将引发错误并且插入将失败。

希望有帮助。

编辑:另一个(较差的)解决方案可能是:

在执行插入操作之前,访问存储的 sql 函数,该函数将检查您想要的内容。

sql 函数应该是这样的:

...
declare @someVariable int
select @someVariable = count(*) from table t
where (t.FirstName = send_parameterFirstName) AND
(t.LasttName = send_parameterLastName) AND
(t.tel = send_parameterTel)

if @someVariable > 0
return -1
else
return 1
....

如果你得到-1,你就不会插入......:)当然你应该编写自己的代码,但我仍然认为主键是最好的解决方案,第二个只是一个糟糕的解决方案。您可以在这里看到如何从 php 访问存储的 sql 函数: access sql functions from php

关于php - 我需要防止输入重复的数据。我基于以下几点;名字、姓氏和电话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52909042/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com