PHP Fatal error: Call to undefined function mysql_connect() 错误解释
我使用的是5.6.11版本的php
刚开始以为编译参数加了--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd,就可以不能安装mysql了。
但是使用了mysq_connect()函数后发现php无法解析,在apache的日志当中出现下面这个提示,刚开始想不通。
PHP Fatal error: Call to undefined function mysql_connect()
因为原先的mysql.api已经在php5.5开始被移除,而之后的php 自带的mysqli只支持部分部分函数。
具体可以参考http://cn2.php.net/manual/zh/set.mysqlinfo.php
如果真的不想安装mysql,用以替代本函数的有:
- mysqli_connect()
- mysqli_connect("localhost","my_user","my_password","my_db");
http://cn2.php.net/manual/zh/function.mysql-connect.php
------------------------------------------------------------------
首先纠正一个问题,
5.x开始,PHP连接MYSQL无论使用哪种方式都是使用的mysqlnd驱动(当然是在你安装好的时候)。包括mysql_*
、PDO_MYSQL
、MYSQLi
在编译安装PHP的时候,需要指定开启以下扩展--with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd
而不再是 --with-mysqli=/usr/local/mysql
-
PHP7 正式移除了
mysql
扩展
mysqlnd
和mysql
mysqli
pdo_mysql
关系打比方说 mysqlnd
是金属
,而mysql
mysqli
pdo_mysql
只是金属制品
而已
使用PDO连接mysql
$pdo = new PDO('mysql:host=localhost;dbname=database_name;port=3306','用户名','密码');
$pdo->exec('set names utf8');
$stmt = $pdo->prepare("select * from table where id =:id");
$stmt->bindValue(':id',1,PDO::PARAM_INT);
$stmt->execute();
$rows = $stmt->fetchAll(PDO::FETCH_ASSOC);
$rows = $pdo->query("select * from table where id = 1")->fetchAll(PDO::FETCH_ASSOC);