2014-03-28 140 views
0

我想在網站上製作一個表單,您可以在其中寫入要更新的產品的名稱,價格或圖像,並在每個字段旁邊的文本框中編寫您想要的新值IDK的爲什麼每次我寫的東西更新的唯一場的名稱和變化,而不是爲新的名稱前將其更改爲0,我使用的PHP代碼是這樣的:此更新查詢有什麼問題?

<?php 

mysql_connect("localhost","paradise_root","gantzminus1"); 
mysql_select_db("paradise_dbsalon"); 
$nombre = $_POST['txtnombre']; 
$precio = $_POST['txtprecio']; 
$imagen = $_POST['txtimagen']; 
$nombre2 = $_POST['txtnombre2']; 
$precio2 = $_POST['txtprecio2']; 
$imagen2 = $_POST['txtimagen2']; 

$_GUARDAR_SQL = "update productosyservicios set nombre = ('".$nombre2."') or precio = ('".$precio2."') or imagen = ('".$imagen2."') where nombre = ('".$nombre."') or precio= ('".$precio."') or imagen = ('".$imagen."') "; 

$rst = mysql_query($_GUARDAR_SQL) or die("error".$_GUARDAR_SQL); 
if($rst==true){ 
$rest=false; 

} 
?> 
+0

不知道什麼ü要實現的目標,但可以肯定的查詢是不正確的。你能解釋一下你想做什麼嗎? –

+0

您不能使用或語句設置值,'set nombre =('「。$ nombre2。」')或precio =('「。$ precio2。」')或imagen =('「。$ imagen2。」 ')'有缺陷,你可能意指'set nombre =('「。$ nombre2。」'),precio =('「。'precio2。」'),imagen =('「。$ imagen2。」')'但我不知道給定我不知道是否要更新所有3如果任何值是真實的。 – xQbert

+0

好吧想象一下,你有一個名稱,價格和圖像字段的表,然後你想從你的網站更新一行我試圖做,當你寫在例如一個文本框中的奶酪,並在下一個我寫香蕉的在那一行中的名稱從奶酪變成香蕉 – user36379

回答

0

這戈納與多案例:

試一下:

UPDATE productosyservicios SET 
nombre = CASE WHEN nombre = '".$nombre."' then '".$nombre2."' else nombre END , 
precio = CASE WHEN precio = '".$precio."' then '".$precio2."' else precio END , 
imagen = CASE WHEN imagen = '".$imagen."' then '".$imagen2."' else imagen END 
+0

yup,解決了問題非常感謝你bro – user36379

+0

歡迎: )! –

0
$_GUARDAR_SQL = "update productosyservicios set nombre = ('".$nombre2."'), precio = ('".$precio2."'), imagen = ('".$imagen2."') where nombre = ('".$nombre."') or precio= ('".$precio."') or imagen = ('".$imagen."') "; 

您的更新中有or

(UPDATE productosyservicios set nombre = something **OR** <- this shouldnt be or it should be a comma 

更新應以逗號分隔

+0

我改變了它,但現在它刪除了nombre和imagen,並將precio變爲0 – user36379

+0

我們不能看到你發佈的內容不幸 - >我的猜測是你要麼以錯誤的順序發佈它們(即'$ nombre2'應該是你的'WHERE'子句的一部分,而不是更新項目),或者是某些郵件本身出錯,並且某些數據沒有被傳輸(通常是錯誤的變量/表單域) –

+0

我確定這些字段的名稱是正確的,而且我認爲我做的是正確的,因爲nombre,precio或imagen是我想改變的字段的名稱,nombre2,precio2或imagen2是新的值它應該是這樣的,還是我錯了? – user36379

0

您的查詢已關閉。

$_GUARDAR_SQL = "UPDATE productosyservicios SET nombre = '".$nombre2."', precio = '".$precio2."', imagen = '".$imagen2."' WHERE nombre = '".$nombre."' OR precio = '".$precio."' OR imagen = '".$imagen."'"; 
0

您的SQL查詢非常糟糕(不正確)。

您必須更改爲:

$_GUARDAR_SQL = "update productosyservicios set nombre = '".$nombre2."' , precio = '".$precio2."' , imagen = '".$imagen2."' where nombre = '".$nombre."' or precio= '".$precio."' or imagen = '".$imagen."' "; 

我不知道你的where子句。

另請檢查您的數據庫。某處可以有文本的整數列 - 對所有文本更改爲varchar。

+0

我改變了它,但現在它刪除nombre和imagen,並將precio變換爲0,文本列是varchar – user36379