您的位置:首页 > 编程语言 > PHP开发

PHP通过pdo链接mysql

2016-09-20 10:29 363 查看
php7.0,不支持mysql_系列函数,支持mysqli和pdo,更推荐的是pdo!

将项目中的安装文件的mysql_系列函数,升级为pdo函数的过程中,看了看pdo的操作文档。

1.我们都知道,首先得链接数据库成功,使用mysql很简单:

mysql_connect('127.0.0.1:3306', 'root', 'root'),if判断返回值即可。

而pdo链接,正确返回一个pdo对象,错误则会抛出个pdo异常,得使用:

try{

$link = new PDO($dsn, $user, $password);

}catch(DPOException $e){

echo $e->getMessage();

}

2.针对pdo的dsn的问题,纠结了好久。。

先说下dsn的格式:

dsn前缀:例如:'mysql:'

host:'127.0.0.1'

port:'3306'// 默认可不写

dbname:‘test'// 数据库

unix_socket:mysql的socket文件(/tmp/mysql.sock),不可同host&port方式一起使用

charset:// 5.3.6以后新增,字符集,默认是utf-8

上面就是所有的参数格式,这里得强调下,查看手册,发现所有的例子,dsn中都包含了dbname这个参数,让我很纠结了半天,以为pdo的链接必须有dbname。对于初始应用的安装,我们需要的是创建一个新的数据库,开始并不存在。所以我就想了 "每个mysql安装后,都应该有个test数据库",所以,dsn中就是 "dbname=test",然后在连接成功后,创建好数据库,再使用 "use mydb" 切换为新创建的数据库,然后创建表!

------------------------------------------------------------------------------------------------------------

想法有点天真。。。有的用户可能直接删除了test数据库!第二天负责人说了下,它测试了下没有dbname也可以链接成功,我居然都不懂得去测测。。。。。对自己也是无语了。。。。。这才认真的去找了下手册,别人的评论,确实有个人说了:



所以,dbname是可选的!!

最后,再分析下dsn参数支持的3种不同的方式:

1.就是我们最常用的 "驱动调用方式",就是上面的

2.URI调用方式(一个uri定位的文件,文件中包含的就是dsn的字符串),可本地或远程文件。必须有 'uri:' 前缀

uri:file://url

3.别名方式,我们可在php.ini文件中定义,明确说明,不可在.htaccess 或 httpd.conf中调用

[pdo]

pdo.dsn.mydb="mysql:dbname=test;host=localhost"

new PDO('mydb', 'root', 'root);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  pdo 数据库 php