【发布时间】: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