Php 如果收到x,则更新列,否则更新y
如果我有一个包含3列的表:id、column1、column2。如果我只想在接收URL请求中的“column1”参数时更新column1,否则在接收URL地址中的“column2”参数时更新column2。可能吗?我做了,但我认为这是不对的:Php 如果收到x,则更新列,否则更新y,php,mysql,sql,sql-update,Php,Mysql,Sql,Sql Update,如果我有一个包含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的回答) 您可以这样做
$sql= "UPDATE people SET
answer_yes= '$answer_yes'+1,
answer_no='$answer_no'+1";
谢谢你的帮助
编辑:现在它正在工作(基于Richard Vivian的回答)
您可以这样做:
UPDATE people
SET answer_yes = COALESCE($answer_yes + 1, answer_yes),
answer_no = COALESCE($answer_no + 1, answer_no);
返回传递给它的值中的第一个非NULL
able值。如果任何参数$answer\u yes
或$answer\u no
被传递一个NULL
值,那么$answer\u yes+1
和$answer\u no+1
将被计算为NULL
,对于合并
将返回列值,在这种情况下,列将用其值更新,即它不会更改。您可以执行以下操作:
UPDATE people
SET answer_yes = COALESCE($answer_yes + 1, answer_yes),
answer_no = COALESCE($answer_no + 1, answer_no);
返回传递给它的值中的第一个非
NULL
able值。如果任何参数$answer\u yes
或$answer\u no
被传递一个NULL
值,那么$answer\u yes+1
和$answer\u no+1
将被计算为NULL
,对于合并
将返回列值,在这种情况下,列将使用其值进行更新,也就是说,它不会更改。我不确定您使用的是哪种数据库模型,但逻辑是如果您没有要传递的值,则传递一个NULL
值,并在更新之前检查值是否不为NULL
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
,如果是,则返回第二个值。第二个值与当前值相同,因此它会用相同的值更新它(即不更改值)。我不确定您使用的是哪种数据库模型,但逻辑是如果您没有要传递的值,则传递一个NULL
值,并在更新之前检查值是否不为NULL
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
,如果是,则返回第二个值。第二个值与当前值相同,因此它会使用相同的值对其进行更新(即不更改值)。您可以创建两个SQL语句选项:
If($answer_yes)
{
$sql= "UPDATE people SET answer_yes= '$answer_yes'+1"
}
else
{
$sql= "UPDATE people SET answer_no= '$answer_no'+1"
}
您可以创建2个SQL语句选项:
If($answer_yes)
{
$sql= "UPDATE people SET answer_yes= '$answer_yes'+1"
}
else
{
$sql= "UPDATE people SET answer_no= '$answer_no'+1"
}
@简:平面模型。我只有一张没有关系的桌子。对不起,我是说哪个RDBMS?MySQL?SQL Server?@Curl:MySQL使用wamp服务器。@Curt:Flat模型。我只有一张没有关系的桌子。对不起,我是说哪个RDBMS?MySQL?SQL Server?@Curl:MySQL使用wamp服务器。
COALESCE
$answer\u yes
是URL地址中的参数,answer\u yes
是数据库中的列名?COALESCE
$answer\u yes
是URL地址中的参数,answer\u yes
是数据库中的列名?这似乎很简单;我现在就试试;)。请看我编辑的帖子。我尝试了另一个想法。例如,当我在URL中收到答案为“是”的“1”时,数据库中“答案为”的值将增加(这就是我想要做的)。我说的对吗?没有错误,但没有提及。这一点看起来很简单;我现在就试试;)。请看我编辑的帖子。我尝试了另一个想法。例如,当我在URL中收到答案为“是”的“1”时,数据库中“答案为”的值将增加(这就是我想要做的)。这是正确的我所做的,没有错误,但没有增加。请看我编辑后的文章。我尝试了另一个想法。例如,当我在URL中收到答案为“是”的“1”时,数据库中“答案为”的值将增加(这就是我想要做的)。这是正确的我所做的,没有错误,但没有增加。请看我编辑后的文章。我尝试了另一个想法。例如,当我在URL中收到答案为“是”的“1”时,数据库中“答案为”的值将增加(这就是我想要做的)。我说的对吗,没有错误,但没有提及。