更新mysql php中的特定字段

更新mysql php中的特定字段,php,mysql,Php,Mysql,我在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."' 若有任何行,那个么代码将不会在数据库中插入该记录…

我在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并退出代码

现在,如果我只想更新价格,那么名称和类别将是相同的,然后怎么办

请尽力而为! 谢谢各位朋友

两步解决方案: -创建一个唯一的索引
-使用
INSERT IGNORE
UPDATE IGNORE
而不是
INSERT
UPDATE

您可以使用唯一id执行此操作。更新时首先检查重复,如果发生重复,则仅更新除名称和类别之外的其他字段,否则更新所有要更改的字段

我给你演示一下。根据你的要求进行更改,比如字段名、表名等等

$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);
}

在这种情况下,您只需更新列价格。您没有执行阻止这样做的条款,因为在这种情况下它没有意义。请发布您的
update
query。对于更新检查
选择nm,产品类别,其中nm='“$pnm.”和类别='“$cat.”和id!=”更新记录id“
更新产品集价格=”“$price.”其中nm=”“$pnm.”和category=“$cat.”?非常感谢@MKhalidJunaid@MKhalidJunaid你的答案是有效的。。