我正在尝试使用数据库,其中电子邮件可以有多个条目,但我想防止重复条目。目前我有:
<?php
"SELECT Notes, itemName from UserItems where email = '$email'";
if("itemName" == $name && "Notes" == $desc) {
echo "duplicate";
}
?>
但是itemName和Notes需要成为我的if语句的字符串
我的插入功能在我的代码中较低,但发布不好
$insert = ("insert into UserItems (itemName, ItemNumber, email, Price, Notes) Value (\"$name\", \"$ItemNumber\", \"$email\", \"$price\", \"$desc\")");
答案 0 :(得分:2)
我在这里遗漏了什么吗?我没有回答原因,我认为这太明显了,我的帖子会浪费时间 -
<?php
// add actual db connection info here
$email = 'someon@somewhere.com';
$name = 'John';
$desc = 'Some Description';
$row = mysql_fetch_array(mysql_query("SELECT Notes, itemName from UserItems where email = '$email'"));
if($row['itemName'] == $name && $row['Notes'] == $desc) {
echo "duplicate";
}
?>
您永远不会实际运行查询或获取结果。或者定义您要比较的变量。它们是$ _POST,$ _GET,最后一行的结果还是什么?
答案 1 :(得分:0)
如何计算email ='$ email'的条目数?
答案 2 :(得分:0)
根据我们在评论中的对话,听起来最好的办法是在数据库层处理此功能,方法是在所有三列(email,itemName,notes)中添加唯一的约束。使用此解决方案,数据库将不允许所有三列具有相同值的多个行。
mysql命令是:
alter table <your_table> add unique (`email`, `itemName`, `notes`);
// Will be inserted/updated no problem
foo@bar.com, itemName1, notes1
foo@bar.com, itemName1, notes2
foo@bar.com, itemName2, notes1
// An error will be returned because this row already exists
foo@bar.com, itemName1, notes2
唯一的缺点是对数据库的写入会更加昂贵,因为必须考虑所有三列(特别注意)的唯一约束。
您的另一个选择是加载与电子邮件地址匹配的所有行,然后单步执行搜索与项目名称和注释匹配的每一行,这将更加痛苦。