Php 什么';这个更新查询有什么问题?

Php 什么';这个更新查询有什么问题?,php,mysql,sql-update,updates,Php,Mysql,Sql Update,Updates,我想在一个网站上做个表格,你可以在上面写名字,您要更新的产品的价格或图像,在每个字段旁边的文本框中,您可以写入您希望它获取的新值,但idk为什么每次我写入内容时,唯一更新的字段是名称,而不是将新名称的旧名称更改为0,我使用的php代码如下: <?php mysql_connect("localhost","paradise_root","gantzminus1"); mysql_select_db("paradise_dbsalon"); $nombre = $_POST['txtnom

我想在一个网站上做个表格,你可以在上面写名字,您要更新的产品的价格或图像,在每个字段旁边的文本框中,您可以写入您希望它获取的新值,但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;

}
?>

您的更新中有

(UPDATE productosyservicios set nombre = something **OR** <- this shouldnt be or it should be a comma
(更新productosyservicios set nombre=something**或**您的查询已关闭

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

您的SQL查询非常糟糕(不正确)

您必须更改为:

$_GUARDAR_SQL = "update productosyservicios set nombre = '".$nombre2."' , precio = '".$precio2."' , imagen = '".$imagen2."' where nombre = '".$nombre."' or precio= '".$precio."' or imagen = '".$imagen."' "; 
我不确定你的where条款


同时检查您的数据库。您可以在某个地方为文本设置整型列-将所有文本更改为varchar。

此选项可能包含多个大小写:

试试看:

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

不确定您试图实现什么,但查询肯定是不正确的。您能解释一下您试图实现什么吗?您不能使用or语句设置值,
set nombre=(“$nombre2.”)或precio=(“$precio2.”)或imagen=(“$imagen2.”
有缺陷您可能是指
set nombre=(“$nombre2.”),precio=(“$nombre2.”)“$precio2.”),imagen=(“$imagen2.”)
但我不确定,因为我不知道如果有任何值是真的,你是否要更新所有3个。好的,假设你有一个包含名称、价格和图像字段的表,然后你想更新网站上的一行,我正试图做到这一点,例如,当你在文本框中写入cheese,在下一个文本框中,我在该行中写入的名称会发生变化从cheese到bananaI对其进行了更改,但现在它删除了nombre和imagen,并将precio转换为0。我们无法看到您正在发布的内容。不幸的是->我猜您可能是以错误的顺序发布了它们(即,
$nombre2
应该是
WHERE
子句的一部分,而不是更新项)或者post本身出了问题,一些数据没有被传输(这通常是一个错误命名的变量/表单字段)我确信字段的名称是正确的,而且我认为我做得对,因为nombre、precio或imagen是我要更改的字段名称,nombre2、precio或imagen2是新值,所以应该是这样的,还是我错了?如果您只在它需要一个不同的查询。我更改了它,但现在它删除了nombre和imagen,并将precio转换为0,文本列为varchar
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