有一个之前的旧项目需要在新环境运行,发现提示mysql函数没有定义
引用
Fatal error: Uncaught Error: Call to undefined function mysql_connect()


新环境是 PHP Version 7.1.11,之前的php项目都是5.2的,所以代码算是旧家伙了,官方自php5.3开始一直推荐mysqli 和 pdo 。
打印phpinfo看,的确没有mysql的函数,取而代之是mysqli、mysqlnd和pdo

mysqli,mysqlnd,pdo到底是什么:
引用
MYSQL:This extension is deprecated as of PHP 5.5.0, and has been removed as of PHP 7.0.0.
MYSQLI: MySQL Improved Extension
MySQLND: MySQL Native Drive
PDO:The PHP Data Objects。extension defines a lightweight, consistent interface for accessing databases in PHP。


以上摘自 PHP官方手册: http://php.net/manual/en/book.mysqli.php

MYSQL 也叫 Original MySQL,PHP4版本的MYSQL扩展,从PHP5起已经被废弃,并从PHP7开始已经被移除。
MYSQLI 叫做 “MySQL增强扩展”。
MYSQLND MYSQL NATIVE DIRVER 叫做MYSQL “官方驱动”或者更加直接点的叫做“原生驱动”
PDO PHP Data Objects PHP数据对象,是PHP应用中的一个数据库抽象层规范。

项目要跑起来,可以适当修改就正常运行

1 数据库链接


//mysql
$link = mysql_connect('127.0.0.1', 'user', 'password');
if (!$link) {
    echo 'Could not connect: ' . mysql_error();
}else{
  mysql_query("set names 'utf8'");
  mysql_select_db("data");
}

//mysqli
$link = mysqli_connect('127.0.0.1', 'user', 'password');
if (mysqli_connect_errno()) {
    echo 'Could not connect: ' . mysqli_connect_errno();
}else{
  $link->query("set names 'utf8'");
  $link->select_db("data");
}


2 读取数据


//mysql
$sql = "select * from users order by ctime desc";
$qr = mysql_query($sql);
$users = array();
while( $task = mysql_fetch_assoc($qr) ){
  $users[] = $task;
}

//mysqli
$sql = "select * from users order by ctime desc";
$qr = $link->query($sql);
$users = $qr->fetch_all(MYSQLI_ASSOC); //直接获取所有数据





原创内容如转载请注明:来自 阿权的书房
收藏本文到网摘
发表评论
AD
表情
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
emotemotemotemotemot
打开HTML 打开UBB 打开表情 隐藏
昵称   密码   游客无需密码
网址   电邮   [注册]
               

验证码 不区分大小写
 

阅读推荐

服务器相关推荐

开发相关推荐

应用软件推荐