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,如果不是唯一的则返回错误 [重复]