2017-04-14 7 views
0

私はCodeiteiterをSQLiteで使いたい新しいプロジェクトを開始しています。私はこれに関する情報を検索し、SQLiteデータベースからデータを取得して取得することに成功しましたが、これを使ってテーブルのCRUDを作成するにはどうすればよいか分かりませんでした。 MySQLはそれが動作していない購入してください。ここでSQLiteを使用してCodeigniterでCRUDを作成するにはどうすればよいですか?

は私がやったことです:

のconfig/database.phpで

$db['default'] = array(
    'dsn' => '', 
    'hostname' => '', 
    'username' => '', 
    'password' => '', 
    'database' => APPPATH.'/database/Pasapalabra.sqlite', 
    'dbdriver' => 'sqlite3', 
    'dbprefix' => '', 
    'pconnect' => FALSE, 
    'db_debug' => (ENVIRONMENT !== 'production'), 
    'cache_on' => FALSE, 
    'cachedir' => '', 
    'char_set' => 'utf8', 
    'dbcollat' => 'utf8_general_ci', 
    'swap_pre' => '', 
    'encrypt' => FALSE, 
    'compress' => FALSE, 
    'stricton' => FALSE, 
    'failover' => array(), 
    'save_queries' => TRUE 
); 

のconfig/autoload.php

$autoload['libraries'] = array('database'); 

モデル/ modelo_prueba.php

<?php 
defined('BASEPATH') OR exit('No direct script access allowed'); 

class modelo_prueba extends CI_Model { 

    public function getTestData() { 
     return $this->db->get('preguntas')->result(); 
    } 
} 

?> 

コントローラ/ Welcome.php

public function __construct() { 
    parent::__construct(); 
    $this->load->library("grocery_CRUD"); 
} 

public function prueba() { 

     $this->load->model('modelo_prueba'); 
     $dataSet = $this->modelo_prueba->getTestData(); 
     $this->load->view('data_view', [ 
      'dataSet' => $dataSet 
     ]); 

    } 

ビュー/ data_view.php

<h4>Lets test the data</h4> 
<?php 
    if($dataSet) { 
     foreach($dataSet as $dataItem) { 
      echo $dataItem->definicion . "<hr>"; 
     } 
    } 
?> 
<h5>done!</h5> 

これは私のために働いた、それはpreguntas "、データベース内のすべて正しくデータを示しているが、今、私は私が通常行うだけのようなCRUDを作成しようとしていますMySQLとそれが動作している、それはデータベースのエラーを示しています。

私は上記のコードから変更されている唯一のことは、Welcome.php

public function prueba() { 

    $crud = new Grocery_CRUD(); 
    $crud->set_table('preguntas'); 

    $output = $crud->render(); 
    $this->load->view("example.php", $output); 

} 

で画面に表示されるエラーは次のとおりです。

A PHP Error was encountered 

Severity: Warning 

Message: SQLite3::query(): Unable to prepare statement: 1, near "SHOW": syntax error 

Filename: sqlite3/sqlite3_driver.php 

Line Number: 129 

Backtrace: 

File: C:\xampp\htdocs\Pasapalabra_Isidro\application\models\Grocery_crud_model.php 
Line: 436 
Function: query 

File: C:\xampp\htdocs\Pasapalabra_Isidro\application\libraries\Grocery_CRUD.php 
Line: 48 
Function: get_field_types_basic_table 

File: C:\xampp\htdocs\Pasapalabra_Isidro\application\libraries\Grocery_CRUD.php 
Line: 1567 
Function: get_field_types 

File: C:\xampp\htdocs\Pasapalabra_Isidro\application\libraries\Grocery_CRUD.php 
Line: 4507 
Function: showList 

File: C:\xampp\htdocs\Pasapalabra_Isidro\application\controllers\Welcome.php 
Line: 38 
Function: render 

File: C:\xampp\htdocs\Pasapalabra_Isidro\index.php 
Line: 315 
Function: require_once 


A Database Error Occurred 

Error Number: 0 

not an error 

SHOW COLUMNS FROM `preguntas` 

Filename: C:/xampp/htdocs/Pasapalabra_Isidro/system/database/DB_driver.php 

Line Number: 691 

誰もが何であるかを知っていますハプニング?前のコードが機能していたのでデータベース接続にエラーはありませんが、Grocery CRUDはSQLiteのCRUDを作成できません。

私はCodeIgniterの3.1.4で働いていると私はSQLiteのマネージャ(Firefoxの)とSQLiteデータベースを作成0.8.3.1

あなたの答えをいただき、ありがとうございます。あなたは食料品の豆腐ライブラリを変更する必要がsqlite3の持つ作品と食料品のCRUDフォームポストから

+1

grocery_crudモデルでは、sqlite3と互換性がないテーブルからカラム名をフェッチするためにraw sqlクエリを使用していますが、sqlite3互換にするために数行のコードを書き直す必要があります。チェックインしてgrocery_crud_modelを表示 – umefarooq

+0

私はちょうど私がデータベースを変更することができますこのプロジェクトを開始して以来、私はこれらの頭痛を保存する代わりにMySQLを使用します。答えてくれてありがとう。 – Ise92

+0

sqlite3でうまく動作する食料品のための解決策がありますsqlite3でうまく動作します私は答えを確認します – umefarooq

答えて

1

こんにちは、私が見つけた解決策は、最初だけgrocery_crud_modelが含まれ、grocery_crud_modelを延長し、このリンク

  1. http://www.grocerycrud.com/forums/topic/651-suport-for-sqlite3/
  2. このモデルからsqlite3のモデルをコピーしますあなたのsqliteモデルで。
  3. grocery crud library find grocery_crud_modelは、このモデルをロードしているところで、grocery_crud_sqlite3と置き換えれば完了です。それは完璧に動作します。

これらの行は、将来各アップデートで手動で変更する必要があります。

+0

それは私にはうまくいかなかった、それはまったく同じエラーを示して、私は何か間違っていたどちらか。 Grocery_crud_sqlite3というコントローラを作成し、そのページのすべてのコードをコピーしました.Grocery_crud_modelのコードが含まれていましたが、GROCERY CRUDライブラリに入れました。これを置き換えました。 – Ise92

+0

これは私には当てはまりませんでした。私が間違ったことをしたかどうかはわかりません。 私はGrocery_crud_sqlite3と呼ばれるコントローラを作成し、そこにそのページからすべてのコードをコピーし、私はGrocery_crud_modelからのコードが含まれ、その後、食料雑貨品CRUDライブラリに私はこの置き換え: $ CI->ロード - >モデル(「Grocery_crud_modelを」) ; これは: $ ci-> load-> model( 'Grocery_crud_sqlite3'); しかし、まだ動作していません...私は代わりにMySQLを使用するので、それは問題ではありません、あなたは答えてくれてありがとう。 – Ise92

関連する問題