如何使用SQLite使用Codeigniter创建CRUD?

时间:2017-04-14 16:58:55

标签: php database sqlite codeigniter grocery-crud

我正在开始一个新项目,我希望将Codeigniter与SQLite一起使用。我搜索了有关这方面的信息,我设法从我的SQLite数据库中获取并获取数据,但我不知道如何为此表创建一个CRUD,我试着这样做,就像我在过去用MySQL购买它是行不通的。

这是我做的:

配置/ 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
);

配置/ 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>

这对我有用,它可以正确显示&#39; preguntas&#39;数据库,但现在我尝试创建一个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 Manager(Firefox)创建了SQLite数据库0.8.3.1

感谢您的回答。

1 个答案:

答案 0 :(得分:2)

您好我已经找到了杂货crud表格的解决方案与sqlite3的作品你必须从这个链接修改Grocery curd library first copy sqlite3 model

  1. http://www.grocerycrud.com/forums/topic/651-suport-for-sqlite3/
  2. 此模型扩展了grocery_crud_model,只需在您的sqlite模型中包含grocery_crud_model。
  3. 在杂货店crud库中找到grocery_crud_model,它正在加载这个模型,只需用grocery_crud_sqlite3替换,你就完成了。它会很完美。
  4. 请记住,您必须在将来每次更新时手动修改这些行。