【问题标题】:How can I create a CRUD with Codeigniter using SQLite?如何使用 SQLite 使用 Codeigniter 创建 CRUD?
【发布时间】:2017-04-14 16:58:55
【问题描述】:

我正在开始一个新项目,我想将 Codeigniter 与 SQLite 一起使用。我搜索了有关此的信息,并设法从我的 SQLite 数据库中连接并获取数据,但我不知道如何使用它为表创建 CRUD,我正在尝试以与过去相同的方式进行操作用 MySQL 购买它是行不通的。

这是我所做的:

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
        ]);

    }

views/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 Manager (Firefox) 0.8.3.1 创建了 SQLite 数据库

感谢您的回答。

【问题讨论】:

  • 在grocery_crud模型中,他们使用原始sql查询从表中获取列名,这与sqlite3不兼容,您必须重写几行代码以使其与sqlite3兼容。签入grocery_crud_model SHOW COLUMNS FROM
  • 我明白了……好吧,由于我刚刚开始这个项目,我可以更改数据库,我将使用 MySQL 来代替这些令人头疼的问题。谢谢你的回答。
  • 也有使用 sqlite3 的杂货杂货解决方案,也可以与 sqlite3 一起使用我已经测试过,请查看下面的答案

标签: php database sqlite codeigniter grocery-crud


【解决方案1】:

您好,我从杂货店表单帖子中找到了与 sqlite3 一起使用的解决方案,您必须修改 Grocery curd 库,首先从此链接复制 sqlite3 模型

  1. http://www.grocerycrud.com/forums/topic/651-suport-for-sqlite3/
  2. 此模型扩展了grocery_crud_model,只需将grocery_crud_model 包含在您的sqlite 模型中即可。
  3. 在杂货库中找到grocery_crud_model,它正在加载此模型,只需将其替换为grocery_crud_sqlite3,就完成了。它将完美运行。

请记住,您必须在以后每次更新时手动修改这些行。

【讨论】:

  • 它对我不起作用,它显示完全相同的错误,我也不知道我是否做错了什么。我创建了一个名为 Grocery_crud_sqlite3 的控制器并将该页面中的所有代码复制到那里,我包含了 Grocery_crud_model 中的代码,然后在 GROCERY CRUD 库中我替换了这个:
  • 它对我不起作用,它显示完全相同的错误,我也不知道我是否做错了什么。我创建了一个名为 Grocery_crud_sqlite3 的控制器并将该页面中的所有代码复制到那里,我包含了 Grocery_crud_model 中的代码,然后在 GROCERY CRUD 库中我替换了这个: $ci->load->model('Grocery_crud_model');为此: $ci->load->model('Grocery_crud_sqlite3');但是还是不行……我会改用MySQL,所以没关系,谢谢你的回答。
猜你喜欢
  • 1970-01-01
  • 2013-11-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-29
  • 1970-01-01
  • 2019-07-11
  • 1970-01-01
相关资源
最近更新 更多