我需要一点帮助。我有一个模型文件,这会将 CSV 文件导入数据库。但是我的模型文件从C:'wamp'www'cakephp-2.5.6'app'tmp'uploads'Kontaktid
中获取此 CSV,如果名为 export.csv
的 CSV 文件不在此文件夹中存在,那么我的函数会不断向数据库添加空行。
我可以做这样的事情吗(我试图将其添加到控制器中,但这不起作用)?
If empty(Kontaktid) {
echo ("CSV file is not found");exit;
}
这是我的控制器文件:
function import() {
$this->Kontaktid->import('export.csv');
}
这是我的模型文件:
<?php
class Kontaktid extends AppModel {
public $validate = array(
'title' => array('rule' => 'notEmpty'),
'body' => array('rule' => 'notEmpty')
);
var $name = 'Kontaktid';
function import($filename) {
// set the filename to read CSV from
$filename = TMP . 'uploads' . DS . 'Kontaktid' . DS . $filename;
// open the file
$handle = fopen($filename, "r");
// read the 1st row as headings
$header = fgetcsv($handle);
// read each data row in the file
while (($data = fgetcsv($handle, 1000, ",")) !== FALSE) {
$this->query ("INSERT into kontaktids(id,Eesnimi,Perenimi,Maakond,Linn,Tanav,Maja,Telefon,lisanumbrid) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]')");
$this->query;
}
print "Import done";
// close the file
fclose($handle);
}
}
感谢您的帮助!
您可以使用:
<?php
$filename = '/path/to/export.csv';
if (file_exists($filename)) {
// do your import stuff.
} else {
// File is not exist.
}
?>
查看此链接以获取更多信息 : http://php.net/manual/en/function.file-exists.php
我建议不要自己编码,这里有很棒的库,可以为您解析csv
https://github.com/parsecsv/parsecsv-for-php
function import($filename) {
// set the filename to read CSV from
$filename = TMP . 'uploads' . DS . 'Kontaktid' . DS . $filename;
if (file_exists($filename)) {
// do your import stuff.
// open the file
$csv = new parseCSV($filename);
//print_r($csv->data);
//count the rows
if( count($csv->data) > 0) {
foreach($csv->data as $data) {
$this->query ("INSERT into kontaktids(id,Eesnimi,Perenimi,Maakond,Linn,Tanav,Maja,Telefon,lisanumbrid) values('$data[0]','$data[1]','$data[2]','$data[3]','$data[4]','$data[5]','$data[6]','$data[7]','$data[8]')");
$this->query;
}
}
print "Import done";
} else {
print "File is not exist";.
}
}
while
条件应该检查返回值是否也NULL
。如果文件无效,则会出现这种情况。来源:http://php.net/manual/en/function.fgetcsv.php