‘壹’ php连接mysql数据库原理是怎样的
现在使用PDO链接数据库的较多
连接是通过创建 PDO 基类的实例而建立的。不管使用哪种驱动程序,都是用 PDO 类名。构造函数接收用于指定数据库源(所谓的 DSN)以及可能还包括用户名和密码(如果有的话)的参数。
连接到 MySQL
<?php
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
?>
如果有任何连接错误,将抛出一个 PDOException 异常对象。如果想处理错误状态,可以捕获异常,或者选择留给通过 set_exception_handler() 设置的应用程序全局异常处理程序。
处理连接错误
<?php
try{
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
foreach($dbh->query('SELECT*fromFOO')as$row){
print_r($row);
}
$dbh=null;
}catch(PDOException$e){
print"Error!:".$e->getMessage()."<br/>";
die();
}
?>
如果应用程序不在 PDO 构造函数中捕获异常,zend 引擎采取的默认动作是结束脚本并显示一个回溯跟踪,此回溯跟踪可能泄漏完整的数据库连接细节,包括用户名和密码。因此有责任去显式(通过 catch 语句)或隐式(通过 set_exception_handler() )地捕获异常。
连接数据成功后,返回一个 PDO 类的实例给脚本,此连接在 PDO 对象的生存周期中保持活动。要想关闭连接,需要销毁对象以确保所有剩余到它的引用都被删除,可以赋一个 NULL 值给对象变量。如果不明确地这么做,PHP 在脚本结束时会自动关闭连接。
关闭一个连接
<?php
$dbh=newPDO('mysql:host=localhost;dbname=test',$user,$pass);
//在此使用连接
//现在运行完成,在此关闭连接
$dbh=null;
?>
很多 web 应用程序通过使用到数据库服务的持久连接获得好处。持久连接在脚本结束后不会被关闭,且被缓存,当另一个使用相同凭证的脚本连接请求时被重用。持久连接缓存可以避免每次脚本需要与数据库回话时建立一个新连接的开销,从而让 web 应用程序更快。
‘贰’ php如何连接mysql
PHP 可以使庆漏用 MySQLi 或 PDO(PHP Data Objects)扩展来连接 MySQL 数据库。
以下是使用 MySQLi 扩展连接 MySQL 数据库的示例代码:虚迹
pdo
请注意,您需要替换 hostname,username,差差并password 和 database_name 为自己的数据库连接详细信息。
‘叁’ php为什么弃用了mysql
PHP提供了三种不同的api连接到MySQL,这三种api是:mysql, mysqli以及PDO扩展。MySql函数是非常受欢迎的,但是官方团队并不鼓励再使用它们。在php手册里边,当你看到关于Mysql的函数,会发现都标有红色的标志,那意味着它们已经被弃用了。弃用ext/mysql函数不仅安全,而且使用其他数据库查询方法可以同样具有MySQL函数的所有功能。更好的方法是使用PDO代替ext/mysql函数。
以下是PHP里不应该再使用mysql函数的3大原因:
1、mysql函数已在PHP5.5中正式弃用,并将在PHP7中被删除。
2、mysql函数缺少面向对象的接口。
3、mysql函数不支持以下特性:
不支持非阻塞连续获取
不支持异步查询
不支持参数化查询
不支持存储过程
不支持多个语句
不支持在MySQL 5.1的中所有功能
不支持加密(SSL)
不支持压缩
不支持完整的字符集