gpt4 book ai didi

php - 在允许 INSERT 尝试之前重复检查 mysql 表中的数据

转载 作者:可可西里 更新时间:2023-11-01 08:03:31 27 4
gpt4 key购买 nike

在使用以下代码将用户输入的 html 表单插入 mysql 数据库之前,我尝试对其进行数据重复检查(主要来自:Best way to test if a row exists in a MySQL table):

$serialNo = $_POST['serialNo'];

$sqldupe = "SELECT EXISTS(SELECT 1 FROM eqpt WHERE serial = '$serialNo')";

if (mysqli_query($dbcon, $sqldupe)) {
die('RECORD already exists');
}

但即使我尝试输入数据库表 eqpt 中不存在的 $serialNo,我也会不断收到错误消息。

我确实使用 UNIQUE 选项保护表中的 serialNo 列,以防止重复条目。因此,这种重复检查更多是为了向用户提供一种线索,说明如果输入的序列号已经在数据库中,为什么他们尝试插入会被拒绝。

我想我已经掌握了代码片段,但承认因为我已经十多年没有接触过 sql/php,所以我需要获取 RTM 来摆脱一些锈迹。但是,如果这里的问题有快速/明显的解决方法,我将不胜感激。

最佳答案

对于 mysqli_query 函数,返回值将为真,因为“成功的 SELECT、SHOW、DESCRIBE 或 EXPLAIN 查询将返回一个 mysqli_result 对象。对于其他成功的查询,它将返回 TRUE。失败时返回 FALSE”

您的 SQL 将始终成功,因为它要么在存在时返回 1,要么在不存在时返回 0。删除 Exists 如果它不存在则不会返回任何结果,如果你这样做意味着其余代码将工作。

解决方法:

$serialNo = $_POST['serialNo'];

$result = mysqli_query("SELECT EXISTS(SELECT 1 FROM eqpt WHERE serial = '$serialNo') AS found");

$value = $result->fetch_object();

if ($value->found) {
die('RECORD already exists');
}

关于php - 在允许 INSERT 尝试之前重复检查 mysql 表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41668860/

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