2016-12-30 44 views
0

嗨我想获取csv文件数据并在我的视图中显示该数据。Zend Framework 2 - 警告:SplFileObject :: setCsvControl():转义必须是一个字符

下面是我的控制器功能:

public function indexAction() 
    { 
     $delimiter = ','; 
     $enclosure = '""'; 
     $escape = '//'; 
     $filename = 'data' . DIRECTORY_SEPARATOR . 'csv' . DIRECTORY_SEPARATOR . 'StoreDepartment.csv';; 
     $this->file = new SplFileObject($filename); 
     $this->file->setFlags(SplFileObject::READ_CSV | SplFileObject::READ_AHEAD | SplFileObject::SKIP_EMPTY | SplFileObject::DROP_NEW_LINE); 

     $this->file->setCsvControl($delimiter, $enclosure, $escape); 
     $this->useFirstRecordAsHeader = true; 

     $response = $this->getResponse(); 
     $headers = $response->getHeaders(); 
     $headers->addHeaderLine('Content-Type', 'text/csv'); 
     $contents = $this->file->fread($this->file->getSize()); 
     $response->setContent($contents); 
     $views = new ViewModel(array('text'=>$response)); 
     return $views;  
    } 

我得到的所有数据为csv。但我得到以下警告:

警告:SplFileObject :: setCsvControl():逃生必须是字符

此外,我想这个数据转换成JSON或阵列格式这可能吗?

主要概念是我想将这些数据存储到我的数据库表中。那么什么格式适合在数据库中存储数据呢?请帮忙

如何解决这两个错误?

回答

1

警告是因为你的$ escape变量是两个字符而不是一个。

$escape = '/'; 

$escape = "//"; 

因为只使用了双引号需要转义反斜线。

至于你关于如何存储在数据库中的问题。不知道你需要做什么以及CSV中的数据是很难说的。不过,我建议在CSV列和数据库列之间建立一对一映射。尽管您需要的表的数量实际上取决于数据和用例。还有一些情况下,你可能只想存储原始数据,但需要更多的信息,它仍然是一个自以为是的答案,将给予

+0

我已经改变了$ escape ='//';到$ escape ='/';一个,但它不工作仍然给出同样的错误。你可以帮我吗 ? –

相关问题