thinkphp 更新資料時如果未修改資料,返回結果判斷錯誤
$result = $Model->where('id=1')->save($data); if($result) { echo 'success'; }else{ echo 'false'; }
解決辦法: 使用“===”判斷返回值即可
$result = $Model->where('id=1')->save($data);
if($result !== false) {
echo 'success';
}else{
echo 'false';
}
問題解決了,但是還是沒有搞明白原因,於是又去看了一下save方法實現的原始碼(3.2.3版本 mysql驅動):
Tp中模型的底層是由pdo類封裝而來的,所以繼續查詢pdo中的rowCount方法:
原因找到了,因為資料沒有變動,所以資料中影響的條數為零 ,返回值為 0,而 0 在php判斷中又是false,所以就出現了上述的情況。當使用“===”判斷時,由於判斷了變數的型別,0 和 false就不相等了,問題解決。