Php 如果。。。其他的

Php 如果。。。其他的,php,mysql,Php,Mysql,我想更新表,但出了问题。如果某件事是真是假,我如何更新我的表。例如,如果为真,我希望设置值为0,如果不增加+1。这是我的代码: $fp = @fsockopen($host, $port, $errno, $errstr, 30); if ($fp) { print "<TR><TD>$idt</TD><TD>$name<TD>OK</TD><TD>$qu

我想更新表,但出了问题。如果某件事是真是假,我如何更新我的表。例如,如果为真,我希望设置值为0,如果不增加+1。这是我的代码:

$fp = @fsockopen($host, $port, $errno, $errstr, 30);
            if ($fp) { 
                print "<TR><TD>$idt</TD><TD>$name<TD>OK</TD><TD>$quantity</TD></TR>\n";
            } else { 
             print "<TR><TD>$idt</TD><TD>$name<TD>Error</TD><TD>$quantity</TD></TR>\n";
                }

if ($conn->query($fp) == TRUE) {
    $resetsql = "UPDATE addresses SET count=0";
} else {
   $updatesql = "UPDATE addresses SET count=count+1";
}
$fp=@fsockopen($host,$port,$errno,$errstr,30);
如果($fp){
打印“$idt$nameOK$quantity\n”;
}否则{
打印“$idt$nameError$quantity\n”;
}
如果($conn->query($fp)==TRUE){
$resetsql=“更新地址集计数=0”;
}否则{
$updatesql=“更新地址集计数=计数+1”;
}

您似乎在寻找
案例

UPDATE addresses SET cnt = CASE WHEN :param = 1 THEN 0 ELSE cnt + 1 END
如果
:param
1
,则
0
将分配给
cnt
。否则,
cnt
将递增

在MysQL中,这可以缩短为:

UPDATE addresses SET cnt = CASE WHEN :param THEN 0 ELSE cnt + 1 END

也许OP会寻找
execute()
或类似的东西?也许是更简单的东西?@xyz91:这会提供一个简单的查询,让您立即完成任务,而不是在应用程序中实现逻辑。您只需要为查询提供一个
0/1
值……我找到了类似这样的内容:更新表集(failuretime=NOW(),count=count+1)更新表集(failuretime=null,count=0)如何使用itOk我尝试了一下。我应该那样粘贴吗?如果($conn->query($fp)==TRUE){$resetsql=“updateaddresses SET cnt=CASE WHEN:param然后0 ELSE cnt+1 END”;您希望运行查询并检查其结果,而不是检查
$fp
的值。