由於今天要校驗數據的完整性,需要把查詢失敗的SQL寫入文件里,需要追加和換行,要用PHP的幾個函數,php.net上說換行要用\r或\n或\r\n(根據操作系統進行選擇),我按照php.net說的做但是不行,發現用常量PHP_EOL是可以的。
方法一:
1 $sql="SELECT $relation_primary_key,old_value FROM $relation_table WHERE name='{$row->$new_key}' AND state_types='{$old_key['state_type']}'"; 2 $query = $this->db->query($sql); 3 $row_result=$query->row(); 4 //如果為空就跳過本次循環,把關聯失敗的數據記錄SQL 5 if(empty($row_result)){ 6 $path = 'files/downloads/excels'; 7 if(!is_dir($path)){ 8 mkdir($path,0777,true); 9 } 10 $filename=$path.'/校驗新舊字段是否匹配.sql'; 11 //如果$filename不存在會自動創建 12 file_put_contents($filename, $sql.PHP_EOL, FILE_APPEND | LOCK_EX); 13 continue; 14 }
方法二:
1 $sql="SELECT $relation_primary_key,old_value FROM $relation_table WHERE name='{$row->$new_key}' AND state_types='{$old_key['state_type']}'"; 2 $query = $this->db->query($sql); 3 $row_result=$query->row(); 4 //如果為空就跳過本次循環,把關聯失敗的數據記錄SQL 5 if(empty($row_result)){ 6 $path = 'files/downloads/excels'; 7 if(!is_dir($path)){ 8 mkdir($path,0777,true); 9 } 10 $filename=$path.'/校驗新舊字段是否匹配.sql'; 11 //如果$filename不存在會自動創建 12 $fp=fopen($filename,'a'); 13 fwrite($fp, $sql.PHP_EOL); 14 fclose($fp); 15 continue; 16 }