php pdo mysql 使用_PHP入门(15)使用PDO操作MySQL数据库

PDO是什么?

PDO(PHP Data Object)提供了轻量级的访问PHP数据库的接口。PDO提供了数据访问的抽象层,这意味着无论使用什么数据库,都可以用同样的方法来操作数据库。

使用PDO之前必须要修改php.ini文件

保证以下两行前面的分号去掉extension=php_pdo.dll

extension=php_pdo_mysql.dll连接数据库<?php

$dsn = "mysql:dbname=mydb;host=127.0.0.1";/*定义数据源的名称 DSN(data source name)*/

$user = "root";

$password = "123456";

try{

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

}catch(PDOException $e){ /*如果连接错误,会抛出PDOException异常*/

echo "Connection failed!".$e->getMessage();

}

如何关闭连接?$dbh = null;/*注意,与PDO对象有关的所有对象也应该关闭,即设置为null*/

如何设置数据库的持久连接?$dbh = new PDO("odbc:SAMPLE", "db2inst1", "ibmdb2",

array(PDO::ATTR_PERSISTENT => true));/*不建议使用持久连接*/

2.执行sql语句

使用PDO对象的query()方法$dbh = new PDO($dsn,$user,$password);

foreach($dbh->query("select * from test") as $row)/*执行查询语句*/

echo $row["id"]."
";

如果需要其他sql语句,只需讲sql语句传递给query()方法执行即可。例如$dbh->query("insert into test values(10000)");

3.提交事务与回滚事务$dbh->beginTransaction(); /*开始一个事务*/

$dbh->exec("insert into test values(45)");

$dbh->commit();/*提交一个事务*/$dbh->beginTransaction();

$dbh->exec("insert into test values(48)");

$dbh->rollBack();/*撤销一个事务 48没有被插入*/

4.预编译语句

使用预编译语句可以在执行的时候动态为sql语句绑定参数,这样做可以有两个好处sql语句只需要解析一次,就可以通过绑定不同的参数执行多次,节约系统资源。

有效的防止sql注入。$stmt = $dbh->prepare("insert into test values(:id)");/*预编译语句*/

$stmt->bindParam(":id",$id);/*绑定参数*/

$id = 111;

$stmt->execute();/*执行*/$stmt = $dbh->prepare("insert into test values(?)");/*预编译语句 也可以通过?作为占位符*/

$stmt->bindParam(1,$id);/*绑定参数*/

$id = 111;

$stmt->execute();/*执行*/

执行预编译的查询语句$stmt = $dbh->prepare("select * from test where id=?");

$stmt->execute(array(111));/*参数必须是数组类型*/

while($row = $stmt->fetch())/*取出结果*/

print $row["id"];

注意,下面占位符的指定是无效的。<?php

$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE "%?%"");/注意,占位符必须占据整个

值的位置/

$stmt->execute(array($_GET["name"]));

/*下面的指定才是正确的*/

$stmt = $dbh->prepare("SELECT * FROM REGISTRY where name LIKE ?");

$stmt->execute(array("%$_GET[name]%"));

关于PDO更多的用法,请自行查找PHP mannual.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值