我有这个代码,但在我看来这是太多了。我是编程新手,这就是我有疑问的原因。 我认为应该有一个更短的方法让它工作没有这个if if循环,切换或它现在好吗?
如果$total==21
然后mysql_query("UPDATE user SET left = '20'
,$total==20
然后left=19
,依此类推,直到$total=1
和left=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");
}
圣诞快乐!
答案 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() );
}
注意我是如何将变量硬编码为整数的,这样它就不会引人注目(如果它来自客户端)。