Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/260.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php csv导入可能的方法?_Php_Yii - Fatal编程技术网

Php csv导入可能的方法?

Php csv导入可能的方法?,php,yii,Php,Yii,我需要创建一个csv来将数据导入数据库,但我有一个困惑 我的csv数据与3个表相关 那么,如何分离以及创建csv的可能方式是什么呢 1) 如果表1中有数据,则检查是否需要插入数据 或者更新了这些数据 2) 我还要求如果数据未插入,结果也会同时显示插入未插入等。我已经实现了这段代码,它是经过测试的代码。我认为这是非常充分的利用 你必须遵守一些规则:- 1.根据数据库表名创建csv文件(例如:db表名为users,则csv应为users.csv) 2.开始数据输入后,csv文件的第一行应该是db表字

我需要创建一个csv来将数据导入数据库,但我有一个困惑

我的csv数据与3个表相关

那么,如何分离以及创建csv的可能方式是什么呢 1) 如果表1中有数据,则检查是否需要插入数据 或者更新了这些数据
2) 我还要求如果数据未插入,结果也会同时显示插入未插入等。

我已经实现了这段代码,它是经过测试的代码。我认为这是非常充分的利用

你必须遵守一些规则:-

1.根据数据库表名创建csv文件(例如:db表名为users,则csv应为users.csv)

2.开始数据输入后,csv文件的第一行应该是db表字段名称(例如:Id、名称等)

3.您可以从以下位置下载数据源类:-因为我需要以下代码:require_once'CSV/DataSource.php'

<?php
ini_set('memory_limit','512M');
$dbhost = "localhost";
$dbname = "excel_import";
$dbuser = "root";
$dbpass = "";

$conn=mysql_connect ($dbhost, $dbuser, $dbpass) or die ("I cannot connect to the database because: " . mysql_error());
mysql_select_db($dbname) or die("Unable to select database because: " . mysql_error());


require_once 'CSV/DataSource.php';

$filename = "Book1.csv";
//$filename = $_POST['filename'];
$ext = explode(".",$filename);

$path = "uploads/".$filename;

$dbtable = $ext[0];


import_csv($dbtable, $path);


function import_csv($dbtable, $csv_file_name_with_path)
{
    $csv = new File_CSV_DataSource;
    $csv->load($csv_file_name_with_path);

    $csvData = $csv->connect();

    $res='';
    foreach($csvData  as $key)
    {
        $myKey ='';
        $myVal='';
        foreach($key as $k=>$v)
        {


            $myKey .=$k.',';
            $myVal .="'".$v."',";

        }
        $myKey = substr($myKey, 0, -1);
        $myVal = substr($myVal, 0, -1); 




        $query="insert into ".$dbtable." ($myKey)values($myVal)";
        $res=  mysql_query($query);

    }

    if($res ==1)
    {

    echo "record successfully Import.";
    }else{

    echo "record not successfully Import.";
    }
}

?>


根据打印的数据,您可以执行进一步的步骤。

通过使用phpexcel,您可以在Yii框架中轻松导入excel/csv

1.将最新的phpexcel从extract下载到extensions文件夹

2.在控制器中创建一个操作,并提供适当的basepath和phpexcelpath

public function actionImport()
            {
                  $message = '';
                  if (!empty($_POST))
                     {
                    $file = CUploadedFile::getInstanceByName('import');
                    $spec = Yii::app()->basePath.'/data/imports/'.$file->name;
                    $file->saveAs($spec);



                    spl_autoload_unregister(array('YiiBase','autoload'));




                     $phpExcelPath = Yii::getPathOfAlias('ext.phpexcel.vender');

                       include($phpExcelPath . DIRECTORY_SEPARATOR . 'PHPExcel.php');

                    spl_autoload_register(array('YiiBase', 'autoload'));


                    try {



                         $inputFileType = PHPExcel_IOFactory::identify($spec); 
                         $objReader = PHPExcel_IOFactory::createReader($inputFileType);

                         if ($inputFileType != 'xls')
                            {
                            $objReader->setReadDataOnly(true);
                            }
                        $objPHPExcel = $objReader->load($spec); 
                        $objWorksheet = $objPHPExcel->setActiveSheetIndex(0);
                        $highestRow = $objWorksheet->getHighestRow();
                        for ($row = 1;$row < $highestRow+1; $row++)
                             {
                             $model= new ExamScores; // Yii AR model
                             $model->id = $objWorksheet->getCellByColumnAndRow(1, $row)->getValue();
                             $model->student_id = $objWorksheet->getCellByColumnAndRow(2, $row)->getValue();
                              $model->exam_id = $objWorksheet->getCellByColumnAndRow(3, $row)->getValue();
                              $model->marks = $objWorksheet->getCellByColumnAndRow(4, $row)->getValue();
                             $model->save(false);
                             $model->detachBehaviors(); // PHP < 5.3 memory management
                             unset($model);
                             Yii::app()->user->setFlash('sucess','Mark saved Successfully');
                             }


                        }
                    catch (Exception $e)
                       {
                       $message = 'There was a problem handling your file. Technical details: '.$e->getMessage();

                       }
                    if (! empty($message))
                       {
                       Yii::app()->user->setFlash('error',$message);

                       }
                    }       
                  $this->render('import');
          }
公共函数actionImport()
{
$message='';
如果(!空($\u POST))
{
$file=cuploaddedfile::getInstanceByName('import');
$spec=Yii::app()->basePath./data/imports/.$file->name;
$file->saveAs($spec);
spl_autoload_unregister(数组('YiiBase','autoload'));
$phpExcelPath=Yii::getPathFalias('ext.phpexcel.vender');
包括($phpExcelPath.DIRECTORY\u SEPARATOR.'PHPExcel.php');
spl_自动加载_寄存器(数组('YiiBase','autoload');
试一试{
$inputFileType=PHPExcel\u IOFactory::identify($spec);
$objReader=PHPExcel\u IOFactory::createReader($inputFileType);
如果($inputFileType!=“xls”)
{
$objReader->setReadDataOnly(true);
}
$objPHPExcel=$objReader->load($spec);
$objWorksheet=$objPHPExcel->setActiveSheetIndex(0);
$highestRow=$objWorksheet->getHighestRow();
对于($row=1;$row<$highestRow+1;$row++)
{
$model=newexamcores;//Yii-AR模型
$model->id=$objWorksheet->getCellByColumnRow(1,$row)->getValue();
$model->student_id=$objWorksheet->getCellByColumnRow(2,$row)->getValue();
$model->exam_id=$objWorksheet->getCellByColumnRow(3,$row)->getValue();
$model->marks=$objWorksheet->getCellByColumnRow(4,$row)->getValue();
$model->save(假);
$model->detachBehaviors();//PHP<5.3内存管理
unset($模型);
Yii::app()->user->setFlash('success','Mark saved Successfully');
}
}
捕获(例外$e)
{
$message='处理文件时出现问题。技术详细信息:'。$e->getMessage();
}
如果(!empty($message))
{
Yii::app()->user->setFlash('error',$message);
}
}       
$this->render('import');
}
3.在您的视图文件中

<!--<div class="formCon">
<div class="formConInner">-->

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="247" valign="top">

    <?php $this->renderPartial('left_side');?>

    </td>
    <td valign="top">




<h1>IMPORT EXCEL SHEET</h1>

<?php if(Yii::app()->user->hasFlash('sucess')): ?>

<div class="flash-success">
    <?php echo Yii::app()->user->getFlash('sucess'); ?>
</div>

<?php endif; ?>

<div style="background-color: #E6E4E4;">
<table width="100%" cellspacing="2" cellpadding="2">

<tr>
<?php echo CHtml::beginForm('', 'post', array('enctype'=>'multipart/form-data')); ?>
<tr><td>&nbsp;</td></tr>
<td><?php echo CHtml::label('File to Import', 'fti'); ?> 
<?php echo CHtml::fileField('import', '', array('id'=>'fti')); ?></td>
</tr>


<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>


<tr>

<td><?php echo CHtml::submitButton('Submit'); ?> </td>


</tr>

<?php echo CHtml::endForm(); ?>
</tr>
</table>


</div>
    </td>

</table>


<!--</div>
</div>-->

导入EXCEL工作表

我开发了一个wine,winery,vintage应用程序。在此应用程序中,我使用yii上传csv realted wine,vintage,winery因此需要您对wine的csv的建议需要winery id或名称如果输入错误的winery id或名称,哪一个更好,那么我采取什么行动请给我建议尝试以下方法:使用mysql做这项工作似乎要快一点。非常好的方法..挽救了我的一天。
<!--<div class="formCon">
<div class="formConInner">-->

<table width="100%" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td width="247" valign="top">

    <?php $this->renderPartial('left_side');?>

    </td>
    <td valign="top">




<h1>IMPORT EXCEL SHEET</h1>

<?php if(Yii::app()->user->hasFlash('sucess')): ?>

<div class="flash-success">
    <?php echo Yii::app()->user->getFlash('sucess'); ?>
</div>

<?php endif; ?>

<div style="background-color: #E6E4E4;">
<table width="100%" cellspacing="2" cellpadding="2">

<tr>
<?php echo CHtml::beginForm('', 'post', array('enctype'=>'multipart/form-data')); ?>
<tr><td>&nbsp;</td></tr>
<td><?php echo CHtml::label('File to Import', 'fti'); ?> 
<?php echo CHtml::fileField('import', '', array('id'=>'fti')); ?></td>
</tr>


<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>
<tr><td>&nbsp;</td></tr>


<tr>

<td><?php echo CHtml::submitButton('Submit'); ?> </td>


</tr>

<?php echo CHtml::endForm(); ?>
</tr>
</table>


</div>
    </td>

</table>


<!--</div>
</div>-->