由于YII 数据库用的是PDO连接方式 就不得不学习一下基础了
1,使用PDO 之前要先修改一下php.ini里面的配置 开启PDO扩展
PHP.ini中,去掉"extension=php_pdo.dll"前面的 ";" 号
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
配置完不要忘记重启Apache 服务器哦
2,PDO连接mysql数据库
$db=new pdo("mysql:host=localhost; dbname=test","root","");
//默认不是长连接,若要使用数据库长连接,需要在最后加如下参数: array(PDO::ATTR_PERSISTENT => true)
$db=new pdo("mysql:host=localhost; dbname=test","root","",array(PDO::ATTR_PERSISTENT => true));
3,PDO常用方法、
$db->query() 主要是用于有记录结果返回的操作,特别是SELECT操作
$db->exec() 主要是针对没有结果集合返回的操作,如INSERT、UPDATE等操作
$db->lastInsertId() 返回上次插入操作,主键列类型是自增的最后的自增ID
PDOStatement::fetch() 是用来获取一条记录
PDOStatement::fetchAll() 是获取所有记录集到一个中
//增加 也可以用query();
$insert=$db->exec('INSERT INTO user (`name`,`age`,`tel`)values("andy","26","13508996610")');
$lastid=$db->lastInsertId(); //插入的最后一条记录id
//删除
//$count=$db->exec("delete from user where id=2");
//修改
$update=$db->exec("UPDATE user set `name`='andy_shi',`age`='24' where id=$lastid ");
//查
$db->setAttribute(PDO::ATTR_CASE, PDO::CASE_LOWER);//设置数组索引大小写
//PDO::CASE_LOWER -- 强制列名是小写
//PDO::CASE_NATURAL -- 列名按照原始的方式
//PDO::CASE_UPPER -- 强制列名为大写
$query=$db->query("select name from user");
$query->setfetchmode(pdo::FETCH_ASSOC); //设置数组关联方式
//PDO::FETCH_ASSOC-- 关联数组形式
//PDO::FETCH_NUM -- 数字索引数组形式
//PDO::FETCH_BOTH -- 两者数组形式都有,这是缺省的
//PDO::FETCH_OBJ -- 按照对象的形式,类似于以前的mysql_fetch_object(
while($row=$query->fetchAll()){
echo "<pre>";
print_r($row);
}
PDO查询中文乱码问题
$db->query("set names 'utf8';"); 加入这一行代码设置一下就可以了