Перейти из форума на сайт.

НовостиФайловые архивы
ПоискАктивные темыТоп лист
ПравилаКто в on-line?
Вход Забыли пароль? Первый раз на этом сайте? Регистрация
Компьютерный форум Ru.Board » Интернет » Web-программирование » Загрузка данных в базу данных в Yii

Модерирует : Cheery

 Версия для печати • ПодписатьсяДобавить в закладки

Открыть новую тему     Написать ответ в эту тему

yuriy19761976

Junior Member
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
Здравствуйте!
 Подскажите, плиз, второй день бьюсь - и ничего не получается!
 Мне нужно загрузить файл (cvs с разделителями таб) в базу данных с помощью запроса LOAD DATA LOCAL INFILE в фреймворке Yii.
 Значит так:
 В контролере код:
public function actionIndex()
{
 
        $model= new ImportPrice;
        if(isset($_POST['ImportPrice']))
        {
            $model->attributes=$_POST['ImportPrice'];
            if($model->validate())
            {
                $csvFile=CUploadedFile::getInstance($model,'file');
                $tempLoc=$csvFile->getTempName();
                 
               $sql = "LOAD DATA LOCAL INFILE '".$tempLoc."'
        IGNORE INTO TABLE hot_page
        FIELDS TERMINATED BY '\t'
        LINES  TERMINATED BY '\r\n'
        IGNORE 1 LINES
        (id_page,title,text)";
 
    $connection=Yii::app()->db;
    $connection->createCommand($sql)->execute();
            }
 
        }
 
        $this->render("index",array('model'=>$model));
    }
 
 
 
 При попытке загрузить в базу данных выдает ошибку:
 PDOStatement::execute() [<a href='pdostatement.execute'>pdostatement.execute</a>]: LOAD DATA LOCAL INFILE forbidden  
 
 Судя из содержания ошибки - запрещено загружать. Но почему?  
 Как можно все таки на Yii загрузить файл.
 Кстати пример был взят из сайта http://www.yiiframework.com/wiki/336/im ... a-command/
 
 Но, когда загружаешь файлы штатным способом, к примеру:
$pwdb=mysql_connect("127.0.0.1", "alex76", "123") or die("База даных не подключена");
mysql_query('SET character_set_database = utf8');
mysql_query('SET NAMES utf8');
$db=mysql_select_db("hotline", $pwdb) or die("База даных не выбрана! (A)");
 
$sql = "LOAD DATA LOCAL INFILE '".$patch."'
IGNORE INTO TABLE hot_page
FIELDS TERMINATED BY '\t'
LINES  TERMINATED BY '\r\n'
IGNORE 1 LINES
(id_page,title,text)";
 
if(mysql_query($sql)){echo 'Success';    }  
else {echo 'Error';}
 
 
 
 Все нормально загружается. Может проблема в настройках подключения к базе данных файла main.php:
db'=>array(
'connectionString' => 'mysql:host=localhost;dbname=hotline',
'emulatePrepare' => true,
'username' => 'alex76,
'password' => '123',
'charset' => 'utf8',
             
),
 
 
 Просто даже уже не знаю как быть... все перелопатил...
 
 Спасибо за любые советы!!!

Всего записей: 44 | Зарегистр. 16-12-2008 | Отправлено: 20:09 08-02-2013
Cheery



.:МордератоР:.
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
yuriy19761976
попробуйте убрать слово LOCAL
проблема может быть связана с правами доступа к файлу
http://stackoverflow.com/questions/13454370/pdo-and-load-data-local-infile-not-working

----------
Away/DND

Всего записей: 52737 | Зарегистр. 04-04-2002 | Отправлено: 22:37 09-02-2013 | Исправлено: Cheery, 00:00 10-02-2013
wokster

Newbie
Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору
       if(isset($_POST['ImportPrice']))  
        {  
            $model->attributes=$_POST['ImportPrice'];  
            if($model->validate())  
            {  
 
можно заменить на
 if($model->load(Yii::$app->request->post('ImportPrice')) and $model->validate())
 
 
Советую глянуть видеоуроки по yii:
https://www.youtube.com/channel/***

Всего записей: 2 | Зарегистр. 26-04-2017 | Отправлено: 11:05 26-04-2017
Открыть новую тему     Написать ответ в эту тему

Компьютерный форум Ru.Board » Интернет » Web-программирование » Загрузка данных в базу данных в Yii


Реклама на форуме Ru.Board.

Powered by Ikonboard "v2.1.7b" © 2000 Ikonboard.com
Modified by Ru.B0ard
© Ru.B0ard 2000-2024

BitCoin: 1NGG1chHtUvrtEqjeerQCKDMUi6S6CG4iC

Рейтинг.ru