Php 若CSV文件不存在,则函数将继续向数据库中添加空行
我需要一点帮助。我有一个模型文件,它将CSV文件导入数据库。但我的模型文件从Php 若CSV文件不存在,则函数将继续向数据库中添加空行,php,cakephp,csv,Php,Cakephp,Csv,我需要一点帮助。我有一个模型文件,它将CSV文件导入数据库。但我的模型文件从C:\wamp\www\cakephp-2.5.6\app\tmp\uploads\Kontaktid中获取此CSV,如果此文件夹中不存在名为export.CSV的CSV文件,则我的函数将继续向数据库中添加空行 我可以这样做吗(我试图将其添加到控制器中,但不起作用) 这是我的控制器文件: function import() { $this->Kontaktid->import('exp
C:\wamp\www\cakephp-2.5.6\app\tmp\uploads\Kontaktid
中获取此CSV,如果此文件夹中不存在名为export.CSV
的CSV文件,则我的函数将继续向数据库中添加空行
我可以这样做吗(我试图将其添加到控制器中,但不起作用)
这是我的控制器文件:
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.
}
?>
查看此链接以了解更多信息:您可以使用以下方法进行操作:
<?php
$filename = '/path/to/export.csv';
if (file_exists($filename)) {
// do your import stuff.
} else {
// File is not exist.
}
?>
查看此链接了解更多信息:while
条件应检查返回值是否也是NULL
。如果文件无效,则会出现这种情况。
来源:while条件应检查返回值是否也是
NULL
。如果文件无效,则会出现这种情况。
来源:我建议不要自己编写代码,这里有一个很棒的库,可以为您解析
csv
我建议不要自己编写代码,这里有一个很棒的库,可以为您解析
csv
有很多方法可以检查文件是否存在:)我相信,但我没有找到解决方案(有很多方法可以检查文件是否存在:)我相信,但我没有找到解决方案(我已经用过了,但不管怎么说,它是在数据库中插入空行,它爆发出这个“文件不存在”,然后它继续在数据库中添加空行,很高兴能帮助你:)我已经用过了,但不管怎么说,它是在数据库中插入空行,它爆发出这个“文件不存在”,然后继续向数据库中添加空行很高兴能帮助您:)是啊,这也行。但哈迪克的答案正是我想要的。谢谢这是要查看文件吗?我添加了
函数导入{
,它说的是意外的“{”,期望的是”(
为什么?如果我用(
)替换{
,它会说意外的“新”(T_new)
更新了答案,应该可以,别忘了使用Composeye包含parseCSV
库,这也可以。但hardik答案正是我想要的。谢谢!这将查看文件?我添加了函数导入{
,它说意外的“{”,期待的是”(
为什么?如果我替换{
使用(
,然后它会说意外的“新”(T_new)
更新了答案,它应该可以工作,不要忘记使用composer包含parseCSV
库
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";.
}
}