您可以從誼得到參考:http://www.yiiframework.com/forum/index.php/topic/23536-upload-data-excel-to-mysql/
**第一步:**定義表單模型即
class UserImportForm extends CFormModel
{
public $file;
/**
* @return array validation rules for model attributes.
*/
public function rules()
{
// NOTE: you should only define rules for those attributes that
// will receive user inputs.
return array(
array('file', 'file',
'types'=>'csv',
'maxSize'=>1024 * 1024 * 10, // 10MB
'tooLarge'=>'The file was larger than 10MB. Please upload a smaller file.',
'allowEmpty' => false
),
);
}
/**
* @return array customized attribute labels (name=>label)
*/
public function attributeLabels()
{
return array(
'file' => 'Select file',
);
}
}
第二步:現在你需要定義表單在你的視圖中.ie
注意:我已經在這裏使用了引導窗體小部件。你可以根據它改變它根據您的需求。
<div class="form">
<?php
$form = $this->beginWidget('bootstrap.widgets.BootActiveForm', array(
'id'=>'service-form',
'enableAjaxValidation'=>false,
'method'=>'post',
'type'=>'horizontal',
'htmlOptions'=>array(
'enctype'=>'multipart/form-data'
)
)); ?>
<fieldset>
<legend>
<p class="note">Fields with <span class="required">*</span> are required.</p>
</legend>
<?php echo $form->errorSummary($model, 'Opps!!!', null, array('class'=>'alert alert-error span12')); ?>
<div class="control-group">
<div class="span4">
<div class="control-group <?php if ($model->hasErrors('postcode')) echo "error"; ?>">
<?php echo $form->labelEx($model,'file'); ?>
<?php echo $form->fileField($model,'file'); ?>
<?php echo $form->error($model,'file'); ?>
</div>
</div>
</div>
<div class="form-actions">
<?php $this->widget('bootstrap.widgets.BootButton', array('buttonType'=>'submit', 'type'=>'primary', 'icon'=>'ok white', 'label'=>'UPLOAD')); ?>
<?php $this->widget('bootstrap.widgets.BootButton', array('buttonType'=>'reset', 'icon'=>'remove', 'label'=>'Reset')); ?>
</div>
</fieldset>
<?php $this->endWidget(); ?>
</div><!-- form -->
**第三步:**現在,你需要在你的控制器寫入動作導入file.ie
public function actionImportCSV()
{
$model=new UserImportForm;
if(isset($_POST['UserImportForm']))
{
$model->attributes=$_POST['UserImportForm'];
if($model->validate())
{
$csvFile=CUploadedFile::getInstance($model,'file');
$tempLoc=$csvFile->getTempName();
$sql="LOAD DATA LOCAL INFILE '".$tempLoc."'
INTO TABLE `tbl_user`
FIELDS
TERMINATED BY ','
ENCLOSED BY '\"'
LINES
TERMINATED BY '\n'
IGNORE 1 LINES
(`name`, `age`, `location`)
";
$connection=Yii::app()->db;
$transaction=$connection->beginTransaction();
try
{
$connection->createCommand($sql)->execute();
$transaction->commit();
}
catch(Exception $e) // an exception is raised if a query fails
{
print_r($e);
exit;
$transaction->rollBack();
}
$this->redirect(array("user/index"));
}
}
$this->render("importcsv",array('model'=>$model));
}
您需要在您的網站或此功能只是一個時間CSV導入? – mohit