首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ADODB -从Mysql切换到Mysqli

问ADODB -从Mysql切换到Mysqli
EN

Stack Overflow用户
提问于 2015-07-30 10:36:22
回答 2查看 5.8K关注 0票数 2

鉴于MySQL即将被废弃,我需要将一个使用ADODB的大型网站从MySQL移到MySQLi。

现在,我已经查找了一些关于Stackoverflow的主题,感谢社区,我已经对需要做的事情有了一个大致的想法。有关这一问题的最佳议题是:

ADODB mySQLi Connection

Switch large website from MySQL to MySQLi

但是,我仍然需要更多地澄清我的具体情况,在这里使用ADODB。

这就是我用来连接到DB的内容:

代码语言:javascript
复制
define('DBHOST', 'db_host');
define('DBUSER', 'db_user'); 
define('DBPASS', 'db_pass');    
define('DBNAME', 'db_name'); 

include('adodb/adodb.inc.php');
$db = ADONewConnection('mysql');
$db->Connect(DBHOST,DBUSER,DBPASS,DBNAME) or die("Database not found!");

所以首先我要改变:

代码语言:javascript
复制
$db = ADONewConnection('mysql');

至

代码语言:javascript
复制
$db = ADONewConnection('mysqli');

我想这是最简单的部分。

现在,由于我使用的是ADODB,是否也需要将MySQL_*函数的所有实例更改为MySQLi_*,或者ADODB自动处理这个问题?我想我知道答案,但无论如何都要问。

我最常用的MySQL_函数是:

代码语言:javascript
复制
mysql_insert_id()
mysql_query()
mysql_fetch_array()
mysql_num_rows()
mysql_escape_string()
mysql_connect()
mysql_select_db()
mysql_error()

最常见的用法是$variable = mysql_insert_id();或$v1 = mysql_query($v);

在ADODB从MySQL迁移到MySQLi时,还有什么需要考虑的吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-07-30 10:44:02

“是否还需要将MySQL_*函数的所有实例更改为MySQLi_* ?”

答案是肯定的。不同的MySQL API/函数不相互混合。您必须使用从连接到查询的相同API/函数。

您可以使用以下函数,只需将mysql_替换为mysqli_,同时在需要它的函数中传递数据库连接,并将其作为第一个参数。

  • 即mysqli_query($connection, $query).

它们被标记为星号*。

代码语言:javascript
复制
mysqli_insert_id() - *
mysqli_query() - *
mysqli_fetch_array()
mysqli_num_rows()
mysqli_escape_string() - *
mysqli_connect() - *
mysqli_select_db() - *
mysqli_error() - *
票数 4
EN

Stack Overflow用户

发布于 2019-11-08 06:52:14

1)我建议您使用pdo_mysql而不是mysql,因为它对事务有更好的支持。

2) ADODB通过使用连接字符串( pdo_ mysql ://localhost/mydb或mysql://localhost/mydb )中的dsn标识符初始化正在使用的驱动程序(例如mysql或pdo_mysql)。

只要在连接字符串中切换mysql -> pdo_mysql,它就会开始使用mysqli -driver。

3)驱动程序加载逻辑位于adodb.inc.php的第4860行,至少在我使用的composer版本中,没有配置mysqli的开关,但如果有PHP7.0.0或更高版本,则自动升级mysqli。您也可以通过添加一个if-语句来调整这段代码以强制mysqli,但是您可以使用ADODB的自定义分叉。也许做个拉力请求。

代码语言:javascript
复制
        case 'mysql':
            // mysql driver deprecated since 5.5, removed in 7.0
            // automatically switch to mysqli
            if(version_compare(PHP_VERSION, '7.0.0', '>=')) {
                $db = 'mysqli';
            }
            $class = $db;
            break;
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31721471

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档