我尝试先创建一个csv文件,然后从我创建的csv文件创建一个ini文件。问题是,当我解析ini文件时,它会抛出错误。我检查了csv文件(来自数据库的记录),底部有一个额外的行。但是当我直接从数据库创建一个ini文件时,底部没有额外的行。
其他信息: 1.错误抛出在这一行:print_r($ ini_array); 2.错误:收到此错误消息:“语法错误,意外' ='”
这是我创建CSV文件的方式:
$this->load->helper('csv');
$this->db->select('*');
$this->db->where('listing_id', $listingId);
$query = $this->db->get('listing');
//folder creation
if (!is_dir('/home/clemjon/Desktop/testListings')) {
mkdir('/home/clemjon/Desktop/testListings', 0777, TRUE);
}
//file creation
$file='/home/clemjon/Desktop/testListings/'.$listingId.'.csv';
if(file_exists($file)){
unlink($file);
}
$this->load->helper('csv');
$this->load->dbutil();
$datas = $this->dbutil->csv_from_result($query);
$this->load->helper('file');
if ( ! write_file($file, $datas, 'a+b'))
{
error_log('Unable to write the file');
}
else
{
error_log('File written!');
}
这就是我创建ini文件的方式(从CSV记录):
$fileName = '/home/clemjon/Desktop/testListings/'.$listingId.'.csv';
$fp = fopen($fileName, 'r');
$fields = fgetcsv($fp);
$result = array();
while ($record = fgetcsv($fp))
{
$result[] = array_combine($fields, $record);
}
$sess_array = array();
foreach ($result as $row) {
$sess_array = array(
'current_listing_id' => $row['listing_id'],
'listing_description' =>$row['description'],
'current_listing_min_age' => $row['min_age'],
'current_listing_max_age' => $row['max_age'],
'current_listing_contact_id' => $row['contact_id']
);
$this->session->set_userdata($sess_array);
}
$this->write_ini_file($result, '/home/clemjon/Desktop/testListings/'.$listingId.'.ini', true);
chmod("/home/clemjon/Desktop/testListings/$listingId.ini", 0775);
$ini_array = parse_ini_file("/home/clemjon/Desktop/testListings/$listingId.ini", false);
print_r($ini_array);
这就是我直接从数据库创建ini文件的方法:
$this->db->select('*');
$this->db->where('listing_id', $listingId);
$query = $this->db->get('listing');
$results = $query->result();
$file='/home/clemjon/Desktop/testListings/'.$listingId.'.ini';
if(file_exists($file)){
unlink($file);
}
$this->write_ini_file($results, $file, true);
感谢。
答案 0 :(得分:0)
只计算你拥有的总行数并从中减去1。
如果CSV中有1到N行。然后只解析1到(N-1)