我在MySQL中有一个名为product
的表,其中字段设置如下..
id int(3) NOT NULL AUTO_INCREMENT,
nm varchar(255),
category varchar(255),
price int(4)
当我插入新产品时,我已经放了一些代码来检查重复,如下所示。
select nm,category from product where nm='".$pnm."' AND category='".$cat."'
如果有任何行,那么代码将不会在数据库中插入该记录...(问题现在开始) 我在更新期间设置了相同的条件.. 如果用户编辑该产品并更改已存在于数据库中的名称或类别,则它将返回false并退出代码..
现在,如果我想只更新价格,那么名称和类别将会是相同的,然后做什么???
请尽力! ! 谢谢朋友们
答案 0 :(得分:2)
您可以使用唯一ID来执行此操作。在更新时首先检查重复,如果发生重复,则只更新除名称和类别以外的其他字段,否则更新所有要更改的字段。
我给你demo.Make根据你的要求进行更改,比如字段名称,表名和所有这些。
$sql="select * from product where nm='".$_REQUEST['name']."'" or category='".$_REQUEST['category']."';
$query=mysql_query($sql);
if(mysql_num_rows($query)>0)
{
while($row=mysql_fetch_array($query))
{
$id=$row['id'];
if(isset($_REQUEST['price']))
{
$sql="update product set price='".$_REQUEST['price']."' where id='$id'";
$query=mysql_query($sql);
}
}
}
else
{
$sql="update product set nm='".$_REQUEST['name']."',category='".$_REQUEST['category']."',price='".$_REQUEST['price']."' where id='$id'";
$query=mysql_query($sql);
}
答案 1 :(得分:0)
两步解决方案:
- 创建一个UNIQUE索引
- 使用INSERT IGNORE
和UPDATE IGNORE
代替INSERT
和UPDATE