如果我有一个包含3列的表:id,column1,column2。如果我想在URL请求中接收“column1”参数时更新column1,否则在URL地址中接收“column2”参数时更新column2。那可能吗?我做到了,但我认为这不正确:
$sql= "UPDATE people SET
answer_yes= '$answer_yes'+1,
answer_no='$answer_no'+1";
感谢您的帮助。
编辑:现在正在运作(基于Richard Vivian回答) If($answer_yes==1)
{
$sql= "UPDATE people SET answer_yes= answer_yes +1"or die(mysql_error());
mysql_query($sql);
}
else if ($answer_no==0)
{
$sql= "UPDATE people SET answer_no= answer_no+1" or die(mysql_error());
mysql_query($sql);
}
答案 0 :(得分:2)
我不确定您使用的是哪种数据库模型,但如果您没有要传递的值,则逻辑将传递NULL
值,并在更新之前检查值是否为null。 / p>
SQL Server
UPDATE Table
SET Column1=ISNULL(@Column1,Column1),
Column2=ISNULL(@Column2,Column2)
<强>的MySQL 强>
UPDATE Table
SET Column1=IFNULL($Column1,Column1),
Column2=IFNULL($Column2,Column2)
这里发生的是ISNULL/IFNULL
正在检查传递给它的第一个值是NULL
,如果是,则返回第二个值。第二个值是与当前值相同的值,因此它使用相同的值更新它(即不更改值)。
答案 1 :(得分:2)
您可以创建2个SQL语句选项:
If($answer_yes)
{
$sql= "UPDATE people SET answer_yes= '$answer_yes'+1"
}
else
{
$sql= "UPDATE people SET answer_no= '$answer_no'+1"
}
答案 2 :(得分:1)
你可以这样做:
UPDATE people
SET answer_yes = COALESCE($answer_yes + 1, answer_yes),
answer_no = COALESCE($answer_no + 1, answer_no);
COALESCE
返回传递给它的值中的第一个非NULL
值。如果$answer_yes
或$answer_no
的任何参数都以NULL
值传递,则$answer_yes + 1
和$answer_no + 1
也将评估为NULL
,因为COALESCE
将返回列值,在这种情况下,列将使用其值进行更新,即不会更改。