PHP在db中验证是不是存在重复

Posted

技术标签:

【中文标题】PHP在db中验证是不是存在重复【英文标题】:PHP verify in db if exist duplicatePHP在db中验证是否存在重复 【发布时间】:2021-05-26 12:24:48 【问题描述】:

我有这个功能:

public function addToFavoriteList($eventId, $userId)

    $sql = "INSERT INTO favorites (eventi_id, user_id) VALUES ($eventId, $userId)";
    $resultSet = $this->db->execute($sql);
    if (!$resultSet) 
        return array('error' => 'event exsist in favorites');
    
    return array('error' => '');

我想检查事件是否已经存在于数据库中,以便我可以为用户显示错误消息。 我写了类似的东西,但它不起作用。

if (isset($_POST['addToFavourite'])) 
    $eventId = htmlspecialchars(trim($_POST['id']));
    $addToFavoriteOutcome = $eventMgr->addToFavoriteList($eventId, $userId);

    if (isset($addToFavoriteOutcome)) 
        $errorMessage = $addToFavoriteOutcome['error'];
    

【问题讨论】:

警告:您的代码容易受到 SQL 注入攻击。您应该使用参数化查询和准备好的语句来帮助防止攻击者通过使用恶意输入值来破坏您的数据库。 bobby-tables.com 给出了风险解释,以及如何使用 php / mysqli 安全地编写查询的一些示例。 切勿将未经处理的数据直接插入您的 SQL 中。按照您现在编写代码的方式,有人可以轻松窃取、错误更改甚至删除您的数据。 无论如何,通过您自己的代码,$addToFavoriteOutcome 将是一个 array (因为这是 addToFavoriteList 返回的内容),因此检查它是否已设置毫无意义 - 您的代码确保它总是被创建的。提示:相反,您可能想要检查该数组的error 属性within 是否为空... 【参考方案1】:

尝试改变这个:

if (isset($addToFavoriteOutcome)) 
    $errorMessage = $addToFavoriteOutcome['error'];

到这里

if ($addToFavoriteOutcome) 
    $errorMessage = $addToFavoriteOutcome['error'];

【讨论】:

以上是关于PHP在db中验证是不是存在重复的主要内容,如果未能解决你的问题,请参考以下文章

在 PHP 中验证唯一的用户 ID,如果不是唯一的则返回错误 [重复]

php会话变量的安全性如何[重复]

php注册的时候怎么验证用户名是不是存在

使用 html 表单和 php 验证空白文本区域或是不是存在默认值

tp未验证内容-9

如何验证 $_GET 是不是存在?