php PDO mysql

时间:2021-12-24 19:50:35

php PDO写法连接mysql;

$db=new PDO("mysql:host=localhost;dbname=sql","root","root");

PDO增删查改

事例

<?php
header("content-type:text/html;charset=utf-8");
$dsn="mysql:dbname=test;host=localhost";
$db_user='root';
$db_pass='admin123';
try{
$pdo=new PDO($dsn,$db_user,$db_pass);
}catch(PDOException $e){
echo '数据库连接失败'.$e->getMessage();
}
//新增
$sql="insert into test (id,user) values (1,'phpthinking')";
$res=$pdo->exec($sql);
echo '影响行数:'.$res;
//修改
$sql="update test set user='phpthinking' where id=1";
$res=$pdo->exec($sql);
echo '影响行数:'.$res;
//查询
$sql="select * from test";
$res=$pdo->query($sql);
foreach($res as $row){
echo $row['user'].'<br/>';
}
//删除
$sql="delete from test where id=1";
$res=$pdo->exec($sql);
echo '影响行数:'.$res;
?>

PDO语句说明

$pdo=new PDO("mysql:dbname=test;host=127.0.0.1;port=3306","root","php");

$pdo=new PDO("mysql:dbname=数据库;host=127.0.0.1;port=3306","root","php",array(PDO::ATTR_PERSISTENT=>true));

$pdo->setAttribute(PDO::ATTR_PERSISTENT,true);//设置数据库连接为持久连接

$pdo->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_EXCEPTION);//设置抛出错误

$pdo->setAttribute(PDO::ATTR_ORACLE_NULLS,true);//设置当字符串为空转换为SQL的NULL

$pdo->setAttribute(PDO::ATTR_CASE,PDO::CASE_UPPER);//表字段字符的大小写转换或原样使用列信息

$pdo->query("SET NAMES utf8");//设置数据库编码

$pdo->query(sql语句);//返回PDOStatement对象,一般用于select

$pdo->exec(sql语句);//返回受影响行数,一般用于insert|update|delete

$sm=$pdo->query();

$sm->rowCount()//返回记录数

$pdo=null;//释放资源

while($data=$sm->fetch()){print_r($data);}//只会返回一条数据

$sm->setFetchMode(PDO::FETCH_ASSOC);//只返回关联索引

$data=$sm->fetchAll();//返回所有数据

$sm=$pdo->prepare(sql语句);

$sm->execute();

$data=$sm->fetchColumn();//一般用来进行count统计

将列分发到变量

$sm->bindColumn(数字,变量);

$sm->bindColumn(字段名,变量);

while($data=$sm->fetch(PDO::FETCH_BOUND)){}

替换变量

$sm=$pdo->prepare(":占位变量");

$sm->bindParam(":占位变量",值,PDO::PARAM_INT);

$sm->bindParam(":占位变量",值,PDO::PARAM_STR,12);

$sm->execute();

替换问号占位符

$sm=$pdo->prepare("?");

$sm->bindValue(1,值,PDO::PARAM_INT);//第1个问号

$sm->bindValue(2,值,PDO::PARAM_STR,12);//第2个问号

$sm->execute();

方法

PDO::query()//处理一条SQL语句并返回一个PDOStatement对象

PDO::lastInsertId()//获取插入到表中的最后一条数据的主键值

PDO::prepare()//负责准备执行的SQL语句

PDO::exec()//处理一条SQL语句并返回所影响的行数

PDO::beginTransaction//开始一个事务并标明回滚起始点

PDO::commit//提交一个事务并执行SQL语句

PDO::__construct//构造函数

PDO::errorCode//获取错误码

PDO::errorInfo//获取错误信息

PDO::getAttribute//获取一个数据库连接对象的属性

PDO::getAvailableDrivers//获取有效的PDO驱动器名称

PDO::inTransaction

PDO::quote//为某个SQL语句中的字符串添加引号

PDO::rollBack//回滚一个事务

PDO::setAttribute//为一个数据库连接对象设定属性

PDOStatement::bindColumn//将列分发到变量

PDOStatement::bindParam//替换变量

PDOStatement::bindValue//替换问号占位符

PDOStatement::closeCursor//关闭光标

PDOStatement::columnCount//字段数

PDOStatement::debugDumpParams

PDOStatement::errorCode//获取错误码

PDOStatement::errorInfo//获取错误信息

PDOStatement::execute//执行语句

PDOStatement::fetch//只会返回一条数据

PDOStatement::fetchAll//返回所有数据

PDOStatement::fetchColumn//一般用来进行count统计

PDOStatement::fetchObject

PDOStatement::getAttribute

PDOStatement::getColumnMeta

PDOStatement::nextRowset

PDOStatement::rowCount//记录数

PDOStatement::setAttribute

PDOStatement::setFetchMode

常量

PDO::ATTR_AUTOCOMMIT//是否开启自动提交功能true|false

PDO::ATTR_PREFETCH//设置应用程序提前获取的数据大小[千字节为单位]

PDO::ATTR_TIMEOUT//设置超时之前的等待时间[秒为单位]

PDO::ATTR_SERVER_INFO//包含与数据库特有的服务器信息

PDO::ATTR_SERVER_VERSION//包含与数据库服务器版本号有关的信息

PDO::ATTR_CLIENT_VERSION//包含与数据库客户端版本号有关的信息

PDO::ATTR_CONNECTION_STATUS//设置超时之前的等待时间[秒为单位]

PDO::CASE_LOWER//强制列名是小写

PDO::CASE_UPPER//强制列名为大写

PDO::CASE_NATURAL//列名按照原始的方式

PDO::FETCH_ASSOC//关联数组形式

PDO::FETCH_NUM//数字索引数组形式

PDO::FETCH_BOTH//两者数组形式都有

PDO::FETCH_OBJ//按照对象的形式

//注释:

当异常被触发时,通常会发生:在PHP5中添加了类似于其它语言的错误异常处理模块。在 PHP代码中所产生的异常可被 throw语句抛出并被 catch 语句捕获。需要进行异常处理的代码都必须放入 try 代码块内,以便捕获可能存在的异常。每一个 try 至少要有一个与之对应的 catch。

使用多个 catch 可以捕获不同的类所产生的异常,当 try 代码块不再抛出异常或者找不到 catch 能匹配所抛出的异常时,PHP 代码就会在跳转到最后一个 catch 的后面继续执行。当然,PHP 允许在 catch 代码块内再次抛出(throw)异常,当一个异常被抛出时,其后(译者注:指抛出异常时所在的代码块)的代码将不会继续执行,而 PHP 就会尝试查找第一个能与之匹配的 catch,如果一个异常没有被捕获,而且又没用使用 set_exception_handler() 作相应的处理的话,那么 PHP 将会产生一个严重的错误,并且输出 Uncaught Exception ... (未捕获异常)的提示信息.

<?php

详细:

http://www.jb51.net/article/61316.htm

http://www.jb51.net/article/59692.htm

http://www.jb51.net/article/61317.htm