如果PHP,避免(缩短)太多其他

时间:2016-12-25 01:17:39

标签: php

我有这个代码,但在我看来这是太多了。我是编程新手,这就是我有疑问的原因。 我认为应该有一个更短的方法让它工作没有这个if if循环,切换或它现在好吗?

如果$total==21然后mysql_query("UPDATE user SET left = '20'$total==20然后left=19,依此类推,直到$total=1left=0

if ($total==21 )
    {
        mysql_query("UPDATE `user` SET `left` = '20' WHERE `user` = 'user1' ") or die(mysql_error() );
    }   


else if ($total==20)
    {
        mysql_query("UPDATE `user` SET `left` = '19' WHERE `user` = 'user1' ") or die(mysql_error() );
    }   

    ....

else if ($total==1)
    {
        mysql_query("UPDATE `user` SET `left` = '0' WHERE `user` = 'user1' ") or die(mysql_error() );
    }   


else {

echo nl2br("0 left");

}

圣诞快乐!

2 个答案:

答案 0 :(得分:1)

首先,查看How can I prevent SQL injection in PHP?,然后查看:

if($total > 0 && $total < 22) {
    $left = $total - 1;
    // prepare("UPDATE `user` SET `left` = ? WHERE `user` = 'user1'")
    // bind_param('i', $left)
    // execute()
}

答案 1 :(得分:0)

您应该使用PDO或Mysqli而不是弃用的旧mysql驱动程序。这应该解决你现在的问题:

$total = (int) $total;
if ($total <= 0) {
    echo '0 left';
} else {
    $total--;
    mysql_query("UPDATE `user` SET `left` = '$total' WHERE `user` = 'user1' ") or die(mysql_error() );
}

注意我是如何将变量硬编码为整数的,这样它就不会引人注目(如果它来自客户端)。