gpt4 book ai didi

php - Codeigniter insert_batch 错误

转载 作者:可可西里 更新时间:2023-10-31 23:31:20 29 4
gpt4 key购买 nike

我使用 Codeigniter v2.1.4 在 sqlite3 数据库中插入一些值。

问题是当我尝试插入一个批处理时它给我一个错误:

>[17-Jan-2014 22:44:17 UTC] PHP Fatal error:  Call to a member function execute() on a >non-object in E:\Repository\cashy-support-app2\system\database\drivers\pdo\pdo_driver.php >on line 193
>[17-Jan-2014 22:44:17 UTC] PHP Stack trace:
>[17-Jan-2014 22:44:17 UTC] PHP 1. {main}() E:\Repository\cashy-support-app2\index.php:0
>[17-Jan-2014 22:44:17 UTC] PHP 2. require_once() E:\Repository\cashy-support-app2\index.php:202
>[17-Jan-2014 22:44:17 UTC] PHP 3. call_user_func_array() E:\Repository\cashy-support-app2\system\core\CodeIgniter.php:359
>[17-Jan-2014 22:44:17 UTC] PHP 4. Main_controller->index() E:\Repository\cashy-support-app2\system\core\CodeIgniter.php:359
>[17-Jan-2014 22:44:17 UTC] PHP 5. Favorites_Model->addToTemp() E:\Repository\cashy-support-app2\application\controllers\main_controller.php:7
>[17-Jan-2014 22:44:17 UTC] PHP 6. CI_DB_driver->query() E:\Repository\cashy-support-app2\application\models\favorites_model.php:106
>[17-Jan-2014 22:44:17 UTC] PHP 7. CI_DB_driver->simple_query() E:\Repository\cashy-support-app2\system\database\DB_driver.php:299
>[17-Jan-2014 22:44:17 UTC] PHP 8. CI_DB_pdo_driver->_execute() E:\Repository\cashy-support-app2\system\database\DB_driver.php:453

如果我只插入一行,它工作正常。

这是有问题的查询:

INSERT INTO temp (Date, Name)
Values("test","test2"),("test","test2"),("test","test2");

如果我使用这个:

INSERT INTO temp (Date, Name) Values("test","test2");

它工作正常。

此外,如果我使用 db->insert(tablename, values) 它工作正常,但如果我使用 db->insert_batch(tablename, array),我得到和上面提到的一样的错误。

在单独的 sqlite 浏览器中,我可以毫无问题地在同一个数据库上执行上述查询。

这是我在 Codeigniter 中的数据库配置:

$active_group = "default";
$active_record = TRUE;

$db['default']['hostname'] = 'sqlite:'.APPPATH.'db/Support_Mails.db';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';//APPPATH.'db/Support_Mails.db';
$db['default']['dbdriver'] = 'pdo';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = APPPATH.'cache';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;

这是数据库:

CREATE TABLE [temp] (
[Date] [TEXT(255)],
[Name] [TEXT(255)],
[Mail] [TEXT(255)],
[Subject] [TEXT(255)],
[Conversation] [TEXT(255)],
[Language] [TEXT(255)],
[Body] [TEXT(30000)],
[ROWID] [TEXT(255)],
[TableName] [TEXT(255)],
[userid] [TEXT(255)]);

使用 print_r(array) 后的数组如下所示:

[18-Jan-2014 10:20:04 UTC] Array
(
[0] => Array
(
[Date] => test
[Name] => test
)

[1] => Array
(
[Date] => test
[Name] => test
)
)

知道它为什么这样做吗?(不知何故,我认为 Codeigniter 设置中存在问题,而不是查询本身存在问题,因为我使用 sqlite 浏览器在同一数据库上使用了相同的查询并且它工作正常)

最佳答案

我已将其作为 CodeIgniter 2.1.4 问题发布在 github 上,正如我发现的那样,“CI 2.1.4 不支持 SQLite3,2.1.x 中的 PDO 驱动程序是实验性的,这意味着错误是意料之中的。 3.0-dev 中提供了通过“sqlite3”和“pdo/sqlite”驱动程序的完整 SQLite3 支持”- https://github.com/EllisLab/CodeIgniter/issues/2834#issuecomment-32838494

关于php - Codeigniter insert_batch 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21197533/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com