2014-03-28 143 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