解决 The mysql extension is deprecated and will be r

news/2024/7/5 4:17:59

为什么80%的码农都做不了架构师?>>>   hot3.png

解决 The mysql extension is deprecated and will be removed in the future技术

maybe yes 发表于2015-07-27 15:19

原文链接 : http://blog.lmlphp.com/archives/132/Tutorial_of_solve_mysql_extension_is_deprecated_and_will_be_removed_in_the_future_of_php55  来自 : LMLPHP后院

PHP 5.5 默认是不支持 MySQL 扩展的,如果需要使用,可以使用 php5enmod mysql 打开。开启后使用 mysql_connect 的项目都会报错:[8192]mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in ... 。

PHP 核心开发组经过了很长时间的讨论,决定在 PHP5.5 版本后将 mysql_ 系列的函数标记为 deprecated,下面将给出如何解决这个问题的方法。

Why was mysql deprecated in PHP 5.5?
Johannes Schlüter, one of the PHP developers listed missing points like these:
Stored Procedures
Prepared Statements
(SSL-)Encryption
Compression
Full charset support

低级快速的解决方案:关闭 deprecated 类型的报错。特别提醒,过时报错使用 @ 符号是不能屏蔽的。

<?php
error_reporting(E_ALL ^ E_DEPRECATED);

更好的解决方案:修改数据库驱动类,使用 mysqli 系列函数代替 mysql 系列函数。

例如:当前许多 PHP 代码中 MySQL 的连接语句如下:

<?php
$link = mysql_connect('localhost', 'user', 'password');
mysql_select_db('dbname', $link);

将上面的语句修改为 MySQLI 连接,如下代码所示:

<?php
$link = mysqli_connect('localhost', 'user', 'password', 'dbname');

使用 mysqli 执行 SQL 的方式与 mysql 非常相似,如下示例:

<?php
// Old
mysql_query('CREATE TEMPORARY TABLE `lmlphp`', $link);
// New
mysqli_query($link, 'CREATE TEMPORARY TABLE `lmlphp`');

若在代码中使用了类似 mysql_result,mysql_fetch_array 等的函数,修改为对应的 mysqli_result,mysqli_fetch_array 即可。

除 了上面的解决方案外,也可以直接使用 PDO_MySQL 来操作数据库,个人感觉这个更好用。如果项目中的数据库驱动类是面向对象风格的,修改为 mysqli 会更加容易一些,使用 mysql_pdo 的代码风格完全不一样,切换过来比较困难。有点疑惑的是,为什么PHP 一定要放弃 MySQL 的扩展,而不通过改变函数内部实现来解决问题。

阅(453)评(0)查看评论

转载于:https://my.oschina.net/hosser/blog/711608


http://lihuaxi.xjx100.cn/news/242815.html

相关文章

Java swing是什么?有什么作用?

在早期JDK1.0发布时&#xff0c;Sun公司就为GUI开发提供了一套基础类库&#xff0c;这套类库被称为AWT(Abstract Window Toolkit)&#xff0c;即抽象窗口工具包。AWT的起初设想就是为了统一实现不同操作系统的图像界面&#xff0c;但问题是&#xff0c;不同操作系统图形库的功能…

c#中接口的使用方法图解_C#图解教程 第十五章 接口

接口什么是接口接口是指定一组函数成员而不实现它们的引用类型。所以只能类和结构来实现接口。这种描述比较抽象&#xff0c;直接来看个示例。下例中&#xff0c;Main方法创建并初始化了一个CA类的对象&#xff0c;并将该对象传递给PrintInfo方法。classCA{public stringName;p…

Restore Volume 操作 - 每天5分钟玩转 OpenStack(60)

前面我们 backup 了 voluem&#xff0c;今天我们将讨论如何 restore volume。 restore 的过程其实很简单&#xff0c;两步走&#xff1a; 在存储节点上创建一个空白 volume。 将 backup 的数据 copy 到空白 voluem 上。 下面我们来看 restore 操作的详细流程&#xff1a; …

学习Java知识应该注意哪些基础原则

想要做java程序猿&#xff0c;学习起来没有那么快的&#xff0c;尤其是零基础学员&#xff0c;java技术在学习的过程中是比较枯燥的&#xff0c;下面小编就为大家详细的介绍一下学习Java知识应该注意哪些基础原则&#xff0c;方便大家在学习的时候能够更加有效率! 学习Java知识…

BZOJ 1194: [HNOI2006]潘多拉的盒子 [DP DFA]

传送门 题意&#xff1a; s个DFA&#xff0c;选出尽量多的自动机a0, a1, a2, . . . , at&#xff0c;使得a1包含a0、a2包 含a1&#xff0c;以此类推。s ≤ 50。 DFA的字符集为{0,1}&#xff0c;有的节点是输出源&#xff0c;节点数n ≤ 50。 判断出包含关系后就是裸的最长路&a…

RestTemplate的GET多参数请求转发

请求方 RequestMapping(value "/movieFindByUser",method RequestMethod.GET)public Object findByUser(RequestParam(name "name", required false) String name, RequestParam(name "username", required false) String username, Reque…

华为云大数据存储的冗余方式是三副本_大数据入门:HDFS数据副本存放策略

大数据处理当中&#xff0c;数据储存始终是一个重要的环节&#xff0c;从现阶段的市场现状来说&#xff0c;以Hadoop为首的大数据技术框架&#xff0c;仍然占据主流地位&#xff0c;而Hadoop的HDFS&#xff0c;在数据存储方面&#xff0c;仍然得到重用。今天的大数据入门分享&a…

琐碎的知识库

禁止当前 Activity截图 <pre> Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); getWindow().addFlags(WindowManager.LayoutParams.FLAG_SECURE); setContentView(R.layout.activity_main); } </pre> 获取当前…