前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PHP PDO MySQL

PHP PDO MySQL

作者头像
康怀帅
发布2018-02-28 15:39:38
3.5K0
发布2018-02-28 15:39:38
举报
文章被收录于专栏:康怀帅的专栏康怀帅的专栏

连接

代码语言:javascript
复制
// 数据源

$dsn='mysql:host=localhost;dbname=imooc';

// uri 形式

$dsn='uri:file://G:\path'
...

$pdo=new PDO($dsn,$username,$password);

var_dump($pdo);

exec()

执行一条 SQL 语句,并返回其受影响的行数。对于 select 没有作用。

  • 创建表
  • 插入记录
  • 更新
  • 删除
代码语言:javascript
复制
$query=<<<EOF
  CREATE TABLE IF NOT EXISTS tablename(...)
EOF;

$res=$pdo->exec($query);

// 最后插入记录的 ID 号

$pdo->lastInsertId();

var_dump($res);

// 获取错误信息

$pdo->errorCode();

$pdo->errorInfo();

query()

查询,执行一条 SQL 语句,返回一个 PDOStatement 对象

  • 查询
  • 插入
代码语言:javascript
复制
$sql='select * from tablename';

$stmt=$pdo->query($sql);

// 之后通过遍历数组,获取结果

prepare() execute()

  • prepare() 准备要执行的 SQL 语句,返回 PDOStatement 对象
  • execute() 执行预处理过的语句
代码语言:javascript
复制
$stmt=$pdo->prepare($sql);

$stmt->execute(); // 返回布尔类型

$stmt->fetch(); // 返回关联 + 索引数组,得到结果集中一条记录

$stmt->fetch(PDO::FETCH_ASSOC); // 设置返回形式,只返回关联数组,失败返回 false

$stmt->setFetchMode(PDO::FETCH_ASSOC); // 设置返回形式,和上一种方法二选一

$stmt->fetchAll(); // 二维数组,返回所有数据,失败返回 false

setAttribute() getAttribute()

设置,得到数据库连接属性

代码语言:javascript
复制
$pdo->getAttribute($attribute);

$pdo->setAttribute($attribute, $value);

quote()

返回带引号的字符串,防止 SQL 注入

代码语言:javascript
复制
$pdo->quote($usernmae);

rowCount()

  • select 操作,返回结果集中记录的条数
  • insert update delete 操作,返回受影响的记录的条数
代码语言:javascript
复制
$stmt->rowCount();

预处理语句中的占位符

也可以防止 SQL 注入

代码语言:javascript
复制
$sql='select * from tablename where username=:username';

// 通过 ? 占位

$sql='select * from tablename where username=?';

$stmt=$pdo->prepare($sql);

$stmt->execute([':username'=>$usernmae]);

// ? 占位

$stmt=execute([$username]);

绑定参数到指定的变量

bindParam()

代码语言:javascript
复制
$stmt->bindParam(':username',$username);

$username='usernmae';

$stmt->execute();

// ? 占位,索引从 1 开始

$stmt->bindParam(1,$username);

$stmt->execute();

把一个值绑定到参数

bindValue()

代码语言:javascript
复制
$username='username';

// ? 占位

$stmt->bindValue(1,$username);

绑定结果中的一列到一个 PHP 变量

bindColumn()

代码语言:javascript
复制
$stmt->execute();

$stmt->bindColumn(1,$username);

while ($stmt->fetch(PDO::FETCH_BOUND)) {
  echo 'username:'.$username;
}

其他

  • columnCount() 返回结果集的列数
  • getColumnMeta() 返回结果集中一列的元数据,索引从 0 开始
  • fetchColumn() 从结果集中返回一列,索引从 0 开始
  • debugDumpParams() 打印预处理语句
  • nextRowset() 将结果集中的指针下移
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2017-04-02,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 连接
  • exec()
  • query()
  • prepare() execute()
  • setAttribute() getAttribute()
  • quote()
  • rowCount()
  • 预处理语句中的占位符
  • 绑定参数到指定的变量
  • 把一个值绑定到参数
  • 绑定结果中的一列到一个 PHP 变量
  • 其他
相关产品与服务
云数据库 SQL Server
腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档