2014-02-28 540 views
0

我已經在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

那麼,你只是在這種情況下更新列價格。你不這樣做,阻止這樣做的條款,因爲在這種情況下它沒有意義。請發佈你的'更新'查詢。 – arkascha

+0

更新檢查'選擇nm,從產品類別nm ='「。$ pnm。」'AND category ='「。$ cat。」'AND id!='更新記錄id'' –

+0

UPDATE product SET price =' 「。$ price。」'WHERE nm ='「。$ pnm。」'AND category ='「。$ cat。」'? –

回答

0

兩步解決方案: - 創建唯一索引 - 使用INSERT IGNOREINSERTUPDATEUPDATE IGNORE代替

2

您可以通過使用獨特的id..First檢查重疊,同時更新做到這一點,如果發生重複,則只更新除名稱和類別之外的其他字段,否則更新將要更改的所有字段。

我給你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); 
}