PDO_MYSQL的一些预定义常量

PDO_MYSQL是PHP Data Objects (PDO) interface的一个mysql扩展。仔细看看php手册上面,其实还是有些有趣的参数可供使用,例如:

PDO::MYSQL_ATTR_INIT_COMMAND (integer)

Command to execute when connecting to the MySQL server. Will automatically be re-executed when reconnecting.

当我使用PDO_MYSQL连上mysql以后,可以利用这个参数自动执行一些QUERY。最常见的使用场合是连接mysql使用utf-8字符集:

$db = new PDO("mysql:dbname=dbname", "user", "password", 
	array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'"));

以上代码会在连上mysql之后马上执行sql:

set names 'utf8';

作者: 发表于April 9, 2008 at 8:38 am

版权信息: 可以任意转载, 转载时请务必以超链接形式标明文章原始出处作者信息及此声明

Tags: ,,,

3 条评论

  1. liuxingyuyuni 于 2008-04-09 @ 09:27:52 留言

    这个和mysqli 一样:)我也喜欢这个功能

  2. 黑客技术 于 2013-03-04 @ 15:54:58 留言

    我想问一下,这个和直接exec sql:set names utf8有什么区别吗?

  3. Volcano 于 2013-03-05 @ 11:54:24 留言

    如果定义了MYSQL_ATTR_INIT_COMMAND,流程如下:

    1. php连上数据库,顺便执行set names utf8
    2. 回到php并声明数据库已连好可用

    如果exec sql:set names utf8,流程可能是这样

    1. php连上数据库
    2. 回到php并声明数据库已连好可用
    3. php执行sql:set names utf8
    4. 回到php声明sql已经执行完毕

    多了一次服务器间的交互

RSS 为此帖反馈评论