欢迎各位兄弟 发布技术文章
这里的技术是共享的
$db_handle = new PDO('mysql:host=localhost;dbname=php_course;port=8889;charset=utf-8','root','root'); //这里 charset=utf-8 应该不起作用
$db_handle->exec("SET NAMES 'utf8';");//这一句起作用 为何加上这句才不是乱码?
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);
来自 http://blog.csdn.net/beyond__devil/article/details/52593059
1.PDO简介
PDO(PHP Data Object) 是PHP 5 中加入的东西,是PHP 5新加入的一个重大功能,因为在PHP 5以前的php4/php3都是一堆的数据库扩展来跟各个数据库的连接和处理,什么 php_mysql.dll、php_pgsql.dll、php_mssql.dll、php_sqlite.dll等等。
PHP6中也将默认使用PDO的方式连接,mysql扩展将被作为辅助
2.PDO配置
PHP.ini中,去掉"extension=php_pdo.dll"前面的";"号,若要连接数据库,还需要去掉与PDO相关的数据库扩展前面的";"号,然后重启Apache服务器即可。
extension=php_pdo.dll
extension=php_pdo_mysql.dll
extension=php_pdo_pgsql.dll
extension=php_pdo_sqlite.dll
extension=php_pdo_mssql.dll
extension=php_pdo_odbc.dll
extension=php_pdo_firebird.dll
......
3.PDO连接mysql数据库
new PDO("mysql:host=localhost;dbname=db_demo","root","");
默认不是长连接,若要使用数据库长连接,需要在最后加如下参数:
new PDO("mysql:host=localhost;dbname=db_demo","root","","array(PDO::ATTR_PERSISTENT => true) ");
4.PDO常用方法及其应用
PDO::query() 主要是用于有记录结果返回的操作,特别是SELECT操作
PDO::exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作
PDO::lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID
PDOStatement::fetch() 是用来获取一条记录
PDOStatement::fetchAll() 是获取所有记录集到一个中
5.PDO操作MYSQL数据库实例