更新mysql php中的特定字段
我在MySQL中有一个名为更新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."' 若有任何行,那个么代码将不会在数据库中插入该记录…
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你的答案是有效的。。