用于MySQL查询的PHP If语句

用于MySQL查询的PHP If语句,php,if-statement,Php,If Statement,就我的一生而言,我无法理解这一点,因为它仍然是新的,所以我可能会忽略它 基于POST值,我想执行3个MySQL查询中的1个。当我添加if语句时,我已经验证了每个查询都是独立工作的。也没有收到任何MySQL错误 如果POST值为“开”或“关”,则运行相应的查询以更新所有列。 如果POST值是其他值(可能是列号),请切换该列 <!-- language: lang-php --> mysql_select_db("lightup") or die(mysql_error()); if

就我的一生而言,我无法理解这一点,因为它仍然是新的,所以我可能会忽略它

基于POST值,我想执行3个MySQL查询中的1个。当我添加if语句时,我已经验证了每个查询都是独立工作的。也没有收到任何MySQL错误

如果POST值为“开”或“关”,则运行相应的查询以更新所有列。 如果POST值是其他值(可能是列号),请切换该列

<!-- language: lang-php -->
mysql_select_db("lightup") or die(mysql_error());

if ($light=="on")
    {
        $query = mysql_query("UPDATE Homes SET     L1Status='0',L2Status='0',L3Status='0',L4Status='0',L5Status='0',L6Status='0',L7Status='0',L8Status='0',L9Status='0',L10Status='0' WHERE HomeID=$id") or die(mysql_error());
    }

elseif ($light=="off")
    {
    $query = mysql_query("UPDATE Homes SET L1Status='0',L2Status='0',L3Status='0',L4Status='0',L5Status='0',L6Status='0',L7Status='0',L8Status='0',L9Status='0',L10Status='0' WHERE HomeID=$id") or die(mysql_error());
    }

else()
    {
    $query = mysql_query("UPDATE Homes SET $lightcolumn = !$lightcolumn WHERE HomeID=$id") or die(mysql_error());   
    }

mysql_close($link);

mysql_选择_db(“lightup”)或die(mysql_error());
如果($light==“on”)
{
$query=mysql\u query(“更新Homes SET L1Status='0',L2Status='0',L3Status='0',L4Status='0',L6Status='0',L7Status='0',L9Status='0',L10Status='0',其中HomeID=$id')或die(mysql\u error());
}
elseif($light==“off”)
{
$query=mysql\u query(“更新Homes SET L1Status='0',L2Status='0',L3Status='0',L4Status='0',L6Status='0',L7Status='0',L9Status='0',L10Status='0',其中HomeID=$id')或die(mysql\u error());
}
else()
{
$query=mysql\u query(“更新Homes SET$lightcolumn=!$lightcolumn,其中HomeID=$id”)或die(mysql\u error());
}
mysql_close($link);

有什么想法吗?

如果您在上一次的
中出现语法错误,请删除括号,而不是:

else()
应该是这样

else

您在上一个
else
中的语法有错误,请删除paren,而不是:

else()
应该是这样

else

我知道您不需要它,但是在最后一个else之后包含()是错误的吗?我假设$light是使用$\u POST正确设置的?我希望$lightcolumn和$id不是直接来自$\u GET/\u POST…Marc B,它们是。这是一个否定吗?建议?Marc B是对的,您应该真正意识到来自$\u POST、$\u GET、$\u COOKIE和$\u SERVER的任何东西都是不可信的。您应该始终过滤来自您无法控制的任何地方的任何内容。一个简单的例子(也是最简单的问题)是,如果有人将$id发送为:“0或HomeID>0”。您可以看到,这不会产生预期的结果。这就是所谓的SQL注入,关于这个主题有很多资料。谢谢Ramon的解释,我完全可以理解这个问题。我将更新我的查询。我知道您不需要它,但是在最后一个查询之后包含()是错误的吗?我假设$light是使用$\u POST正确设置的?我希望$lightcolumn和$id不是直接来自$\u GET/\u POST…Marc B,它们是。这是一个否定吗?建议?Marc B是对的,您应该真正意识到来自$\u POST、$\u GET、$\u COOKIE和$\u SERVER的任何东西都是不可信的。您应该始终过滤来自您无法控制的任何地方的任何内容。一个简单的例子(也是最简单的问题)是,如果有人将$id发送为:“0或HomeID>0”。您可以看到,这不会产生预期的结果。这就是所谓的SQL注入,关于这个主题有很多资料。谢谢Ramon的解释,我完全可以理解这个问题。我会更新我的查询。啊…哇。。。我和这个网站有一种爱恨关系。我觉得自己像个白痴,但学到了很多东西:-)效果很好。别麻烦了,我们都犯了一个错误,这让我们花了很多时间才发现。。但在这里,你会发现很多眼睛可以捕捉到它:-)啊…哇。。。我和这个网站有一种爱恨关系。我觉得自己像个白痴,但学到了很多东西:-)效果很好。别麻烦了,我们都犯了一个错误,这让我们花了很多时间才发现。。但在这里,你会发现有很多眼睛可以捕捉到它:-)