PHP 使用! 取反值的一个问题.
今天把项目上传到服务器后出现的问题,改变状态(0.1)的切换.之前的代码如下:
public function Something()
{
if (IS_AJAX) {
$id = I('post.id');
$attr = I('post.attr');
//获取状态(1 OR 0)
$isshow = $this->product->where("id='$id'")->getField($attr);
//设置状态为反
if($this->product->where("id='$id'")->setField($attr,!$isshow))
{
$info = array('i' => 1, 'msg' => "改变状态成功");
}else{
$info = array('i' => 0, 'msg' => "改变状态失败");
}
$this->ajaxReturn($info);
}
}
以上代码在本地测试一切正常 但是到了服务器后将0设置为1正常,但是将1设置为0的时候SQL报错 SET is_top=''
也就是!$isshow
可以将1取反为0 但是无法将0取反为1,结果为 ' '
后来不得已将$isshow
使用三元赋值$isshow=$isshow==1?0:1;
抛弃了之前的!$isshow
的写法.bug解决了
疑问主要是?
为什么在linux环境下面 !$isshow
取反可以由0取到1 但是1取到0则无法取出来呢?,新手一个谢谢大家.
这个样子就更好了,下面是我的测试代码
window (os:server2016,php:7.2.2)


linux (os:centos7.2,php:7.2.14)
额,不知道你的这个原因是什么原因