Codeigniter 错误:调用未定义的函数 mysql_pconnect()
Posted
技术标签:
【中文标题】Codeigniter 错误:调用未定义的函数 mysql_pconnect()【英文标题】:Codeigniter error: Call to undefined function mysql_pconnect() 【发布时间】:2016-08-17 18:36:04 【问题描述】:我已将我的 codeigniter 版本从 2.2.4 逐步更新到 3.0.6,但出现错误:
An uncaught Exception was encountered
Type: Error
Message: Call to undefined function mysql_pconnect()
Filename: path-to-project\system\database\drivers\mysql\mysql_driver.php
Line Number: 135
Backtrace:
File: path-to-project\application\controllers\Main.php
Line: 10
Function: __construct
File: path-to-project\index.php
Line: 315
Function: require_once
我刚刚用新的替换了我的 index.php 文件和系统目录,并根据教程对我的应用程序进行了一些更改。
这是主控制器:
class Main extends CI_Controller
function __construct()
parent::__construct();
$this->load->model('main_model');
是什么导致了问题?!
还有教程的this is the link。
【问题讨论】:
mysql_* 已从 php 5 中弃用并从 php 7 中删除。切换到 mysqli_* 或 PDO 另外,请提交该教程的链接。 现在,问题出在 codeigniter 上还是我在代码中使用了已弃用的 mysql? 在您的config/database.php
中使用这个:'dbdriver' => 'mysqli',
(将mysql
更改为mysqli
)。
【参考方案1】:
Deprecated features in PHP 5.5.x:
原来的 MySQL 扩展现已弃用,连接数据库时会产生 E_DEPRECATED 错误。相反,请使用 MySQLi 或 PDO_MySQL 扩展。
您正在使用已弃用的 'mysql'
dbdriver。找到config/database.php
文件并将dbdriver
更改为使用'mysqli'
:
$db['default']['dbdriver'] = 'mysqli';
【讨论】:
是的,谢谢它的工作,但有一些问题,我正在配置 ci 的旧项目版本是 2.4.0 但在创建数据库并导入备份后,也在 config->database.php 'mysql '到'mysqli'。最后致命错误消失了,但 heder 的数据正在完善,但在正文内容的位置上显示 xammp 页面。不知道为什么。如果您有任何建议。【参考方案2】:感谢Anant
我得出一个结论:
我将 config 文件夹中的旧 database.php 文件完全更改为新文件:
发件人:
$db['default']['hostname'] = 'localhost';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = '';
$db['default']['dbdriver'] = '';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = TRUE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
收件人:
$db['default'] = array(
'dsn' => '',
'hostname' => '',
'username' => '',
'password' => '',
'database' => '',
'dbdriver' => 'mysqli',
'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
);
错误消失了!
【讨论】:
你的dbdriver
配置值为空,你应该使用$db['default']['dbdriver'] = 'mysqli';
您好,我已经应用了您的解决方案,但错误仍然出现。还有其他解决方案吗?
谢谢,你拯救了我的一天。
在哪里可以找到 application/config/database.php ???【参考方案3】:
转到 application/config/database.php
只需将mysql
更改为mysqli
喜欢 这是以前的:
$db['default']['dbdriver'] = 'mysql';
这是在解决方案之后:
$db['default']['dbdriver'] = 'mysqli';
我只是将 mysql 更改为 mysqli。就是这样
我的错误是
致命错误:未捕获错误:调用未定义函数 mysql_pconnect() 在 E:\manish_data\software\xampp\htdocs\ci2\system\database\drivers\mysql\mysql_driver.php:92 堆栈跟踪:#0 E:\manish_data\software\xampp\htdocs\ci2\system\database\DB_driver.php(116): CI_DB_mysql_driver->db_pconnect() #1 E:\manish_data\software\xampp\htdocs\ci2\system\database\DB.php(149): CI_DB_driver->initialize() #2 E:\manish_data\software\xampp\htdocs\ci2\system\core\Loader.php(347): 数据库(数组,空)#3 E:\manish_data\software\xampp\htdocs\ci2\application\models\usermodel.php(20): CI_Loader->database() #4 E:\manish_data\software\xampp\htdocs\ci2\application\controllers\users.php(15): UserModel->getUsers() #5 E:\manish_data\software\xampp\htdocs\ci2\system\core\CodeIgniter.php(360): 用户->index() #6 E:\manish_data\software\xampp\htdocs\ci2\index.php(202): require_once('E:\manish_data\...') #7 main 抛出 E:\manish_data\software\xampp\htdocs\ci2\system\database\drivers\mysql\mysql_driver.php 在第 92 行
【讨论】:
哈哈老兄,你基本上只是复制了我的答案.. 但甚至没有解释为什么有必要更新dbdriver
您好@Sfili_81,请找出mysql和mysqli之间的区别,因此不同的数据库支持不同的驱动程序与应用程序连接。默认情况下,当您下载 xampp 时,xampp 具有 mysqli,您可以连接到 mysql 或具有不同驱动程序的任何其他 db 。你不仅是编码者。【参考方案4】:
如果您在托管网站时发生此错误,请确保设置正确的 PHP 版本(您的 CI 使用的版本)。
【讨论】:
以上是关于Codeigniter 错误:调用未定义的函数 mysql_pconnect()的主要内容,如果未能解决你的问题,请参考以下文章
Codeigniter“调用未定义的函数mysqli_init()”错误
Codeigniter 错误:调用未定义的函数 mysql_pconnect()
Codeigniter:对未定义函数 mysqli_init() 的致命错误调用
在 Codeigniter 中调用扩展辅助函数时未定义的函数