2017-04-14 103 views
0

我開始了一個新項目,我希望將Codeigniter與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。

我用笨3.1.4工作,我使用SQLite管理器(Firefox)的0.8.3.1

創建SQLite數據庫謝謝您的解答。從雜貨店污物形式交與你必須修改雜貨店豆腐庫sqlite3的作品

+1

在grocery_crud模型中,他們使用原始sql查詢從表中獲取列名,這與sqlite3不兼容,您必須重寫幾行代碼才能使其與sqlite3兼容。檢查grocery_crud_model SHOW COLUMNS FROM – umefarooq

+0

我明白了......好吧,因爲我剛開始這個項目,我可以更改數據庫,我將使用MySQL來保存這些令人頭疼的問題。謝謝你的回答。 – Ise92

+0

有與sqlite3的雜貨crud的解決方案也可用,與sqlite3工作正常我已測試它檢查我的答案 – umefarooq

回答

1

您好我已經找到解決方案首先從這個鏈接

  1. http://www.grocerycrud.com/forums/topic/651-suport-for-sqlite3/
  2. 這種模式複製sqlite3的模型擴展grocery_crud_model,只包括grocery_crud_model在你的sqlite模型中。
  3. 在grocery crud庫找到grocery_crud_model,它正在加載這個模型只需要替換grocery_crud_sqlite3,你就完成了。它會工作完美。

只記得你必須在將來每次更新時手動修改這些行。

+0

它沒有對我工作,它顯示完全相同的錯誤,我不知道我是否做錯了什麼無論是。 我創建了一個名爲Grocery_crud_sqlite3的控制器,並從那個頁面複製了所有代碼,我包含了Grocery_crud_model中的代碼,然後在GROCERY CRUD庫中替換了這個: – Ise92

+0

它沒有用於我,它顯示了完全相同的錯誤,我不知道我是否做錯了。 我創建了一個名爲Grocery_crud_sqlite3並從該頁面中的所有代碼複製有控制器,I包括來自Grocery_crud_model代碼,然後在雜貨店CRUD庫我換成這樣的: $ CI->負載>模型(「Grocery_crud_model」) ; 爲此: $ ci-> load-> model('Grocery_crud_sqlite3'); 但它仍然沒有工作...我會用MySQL代替,所以沒關係,謝謝你的回答。 – Ise92