由于今天要校验数据的完整性,需要把查询失败的SQL写入文件里,需要追加和换行,要用PHP的几个函数,php.net上说换行要用 或 或 (根据操作系统进行选择),我按照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 }