首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【译】现代化PHP开发--PDO

PDO由三种主要类型对象组成:PDO对象PDOStatement对象和 PDOException对象。我们不应忽视PDO驱动程序,但这三种类型对象一起构成PDO扩展主接口。...因为PDO::query在成功时将结果集作为PDOStatement 对象返回(失败时将返回布尔值false,如果要验证,请执行PDO::exec类似的检查)。...通常SQL语句(如查询或更新)一起使用,准备好语句采用模板形式,在每次执行期间将某些常量值替换到模板中。 prepare语句解决了上面提到两个问题。...但是,这里要注意一件更重要事情是,PHP会验证列表值是否和数据库中字段数据类型相匹配,列表这么多数据,这就很容易产生匹配错误。...维护性:指定传递变量数据类型第三个参数,防止PHP产生兼容数据类型,容易产生错误。从长远来看,这也使得代码更易于维护,因为未来开发人员一眼就能看到数据类型

1.9K00

PHPPDO预定义常量讲解

PHP PDO预定义常量 以下常量由本扩展模块定义,因此只有在本扩展模块被编译到PHP中,或者在运行时被动态加载后才有效。 注意:PDO使用类常量自PHP 5.1。...PDO::FETCH_LAZY (integer)指定获取方式,将结果集中每一行作为一个对象返回,此对象变量名对应着列名。PDO::FETCH_LAZY 创建用来访问对象变量名。...在 PDOStatement::fetchAll() 中无效。 PDO::FETCH_ASSOC (integer)指定获取方式,将对应结果集中每一行作为一个由列名索引数组返回。...PDO::FETCH_NAMED (integer)指定获取方式,将对应结果集中每一行作为一个由列名索引数组返回。...PDO::CURSOR_FWDONLY (integer)创建一个只进游标的 PDOStatement 对象。此为默认游标选项,因为此游标最快且是 PHP 中最常用数据访问模式。

2.2K21
您找到你想要的搜索结果了吗?
是的
没有找到

PHP-PDO介绍

1.2.3 开启PDO扩展 开启PDO连接MySQL扩展 extension=php_pdo_mysql.dll 1.3 PDO核心类 1、PDO类:表示PHP和数据库之间一个连接 2、PDOStatement...$pdo->errorInfo()[2]; } 1.5.2 执行数据查询语句 方法:pdo−>query(pdo->query(pdo−>query(sql),返回PDOStatement对象 columnCount(); */ //3.5 遍历PDOStatement对象PDOStatement对象是有迭代器) foreach($stmt as $row){ echo...$row['proname'],'-',$row['proprice'],''; } stdClass类是所有PHP父类 1.5.3 PDO操作事务 事务:是一个整体,要么一起执行,要么一起回滚...事务特性:原子性,一致性,隔离性,永久性 需要将多个SQL语句作为一个整体执行,就需要使用到事务 语法 start transaction 或 begin 开启事务 commit 提交事务 rollback

2.4K21

PHPPDO操作学习(三)预处理类及绑定数据

bindParam() 第二个参数是作为引用类型变量,不能指定为一个常量。...从代码结构中我们就可以看出,bindColumn() 方法对于变量也是作为引用方式绑定到 PDOStatement 对象内部,所以 fetch() 在处理时候就直接为这些变量赋上了值。...如果获取类型和我们绑定时定义类型不同,那么 PDOStatement 就会强转为绑定时指定类型。...; $stmt->execute(['jjjj','8888','j8']); execute() 这个绑定参数是一个数组,在使用问号占位符时候需要注意,在这里,按数组下标来说,它们是从 0 开始算位置...另外需要注意是,PDOStatement 对象操作都是使用 execute() 方法来进行语句执行。这个方法只会返回一个布尔值,也就是成功或者失败。

1.4K10

PHPPDO操作学习(二)预处理语句及事务

PHPPDO操作学习(二)预处理语句及事务 今天这篇文章,我们来简单学习一下 PDO 中预处理语句以及事务使用,它们都是在 PDO 对象操作,而且并不复杂,简单应用都能很容易地实现。...只不过大部分情况下,大家都在使用框架,手写机会非常少。 预处理语句功能 预处理语句就是准备好一个要执行语句,然后返回一个 PDOStatement 对象。...在代码中,我们使用这一条 SQL 语句,通过替换不同占位符内容,实现了两次查询。 prepare() 方法第二个参数是为返回 PDOStatement 对象设置属性。...PDO::ATTR_CURSOR 是设置数据库游标的类型,而 PDO::CURSOR_FWDONLY 意思是创建一个只进游标的 PDOStatement 对象。...此外,PDOStatement 还可以通过 bindParam() 方法来绑定占位符数据,我们将在后面学习 PDOStatement 对象相关文章中继续学习。 接下来,我们再看一下使用 ?

95910

PHP PDOStatement::getColumnMeta讲解

PDOStatement::getColumnMeta PDOStatement::getColumnMeta — 返回结果集中一列元数据(PHP 5 = 5.1.0, PECL pdo = 0.2.0...) 说明 语法 array PDOStatement::getColumnMeta ( int $column ) 检索一个在结果集中以0开始索引元数据作为一个关联数组。...注意:此函数是实验性。此函数表象,包括名称及其相关文档都可能在未来 PHP 发布版本中未通知就被修改。使用本函数风险自担 。...返回值 返回一个关联数组,它包含了下列表示一个单独列元数据值: 列元数据 名称 值 native_type 用于表示列值 PHP 原生类型。...driver:decl_type在数据库中用于表示列值 SQL 类型。如果结果集中列是一个函数结果,则该值不能被 PDOStatement::getColumnMeta() 返回。

34020

PHPPDO操作学习(二)预处理语句及事务

预处理语句功能 预处理语句就是准备好一个要执行语句,然后返回一个 PDOStatement 对象。一般我们会使用 PDOStatement 对象 execute() 方法来执行这条语句。...在代码中,我们使用这一条 SQL 语句,通过替换不同占位符内容,实现了两次查询。 prepare() 方法第二个参数是为返回 PDOStatement 对象设置属性。...PDO::ATTR_CURSOR 是设置数据库游标的类型,而 PDO::CURSOR_FWDONLY 意思是创建一个只进游标的 PDOStatement 对象。...此外,PDOStatement 还可以通过 bindParam() 方法来绑定占位符数据,我们将在后面学习 PDOStatement 对象相关文章中继续学习。 接下来,我们再看一下使用 ?...在 PHP中操作数据库预处理语句 这篇文章中有详细示例。 事务能力 关于事务想必大家也都有一定了解,所以在这里也介绍具体概念了,我们只看看在 PDO 中事务是如何实现

95200

PHP PDOStatement::bindColumn讲解

PDOStatement::bindColumn PDOStatement::bindColumn — 绑定一列到一个 PHP 变量(PHP 5 = 5.1.0, PECL pdo = 0.1.0)...但是,当使用 PgSQL 驱动时,要想能绑定一个 LOB 列作为流,应用程序必须在调用PDOStatement::execute()之前 调用此方法,否则大对象 OID 作为一个整数返回。...参数 column 结果集中列号(从1开始索引)或列名。如果使用列名,注意名称应该由驱动返回列名大小写保持一致。...param 将绑定到列 PHP 变量名称 type 通过 PDO::PARAM_* 常量指定参数数据类型。 maxlen 预分配提示。 driverdata 驱动可选参数。...实例 把结果集输出绑定到 PHP 变量 绑定结果集中列到PHP变量是一种使每行包含数据在应用程序中立即可用有效方法。下面的例子演示了 PDO 怎样用多种选项和缺省值绑定和检索列。 <?

53021

PHP全栈学习笔记12

Linux操作系统,PHP面向对象,语言高级开发技术,常用PHP开发框架,PHP公共api接口开发,PHP测试工具。...数据库PDO简介: pdo简介,安装配置,pdo链接数据库,pdo对象方法介绍以及使用pdostatement对象方法介绍以及使用,pdo错误处理,pdo参数绑定预处理,pdo事务处理,pdo实战...关联数组形式 PDO::FETCH_NUM数字索引数组形式 PDO::FETCH_BOTH两者数组形式都有 PDO::FETCH_OBJ按照对象形式 PDO::FETCH_BOUND以布尔值形式返回结果...PDO::FETCH_LAZY 以关联数组,数字索引,和对象三种形式返回 cursor_orientation:PDOStatement对象一个滚动游标 cursor_offset:游标的偏移量...php $dbms='mysql'; // 数据库类型,对于开发者来说,使用不同数据库,只要该这个就行 $host='localhost'; $dbName='db_database'; $user

2.2K30

PDO 用法学习「建议收藏」

执行sql语句: exec() 、query()、 perpare(); 1、query用来处理有结果集,如select, 返回 PDOStatement 对象,失败返回false(当为 PDO:...参数 --- 索引数组, 按索引顺序使用 * 名子参数 ----关联数组, 按名称使用,和顺序无关 */ //准备好了一条语句,并入到服务器端,也已经编译过来了,就差为它分配数据过来 //同样适用于更新操作...; /* 对于 $params 数组每个值,要预处理语句包含足够未命名占位符 。 语句被执行时, $params 数组值被绑定到预处理语句中占位符。...这和使用 PDOStatement::bindParam() 不一样,因为它需要一个引用变量。 PDOStatement::execute() 仅作为通过值绑定替代。...替代方法是,使用 PDO::query() 来发出一条和原打算中SELECT语句有相同条件表达式 SELECT COUNT(*) 语句,然后用 PDOStatement::fetchColumn(

3.7K31

PHP PDO——单例模式实现数据库操作

1)PDO PDO类主要实现PHP和数据库连接,重要方法如下: a.PDO:构造器,构造新PDO对象。...2)PDOStatement PDOStatement类主要是对PDO类prepare方法预处理语句进行执行,并处理执行后结果集。...c.bindValue:绑定一个值处理语句中参数。 d.columnCount:返回结果集中列数量。...二、PHP使用PDO实现增删改查 1)单例模式实现类实例化(重点:privatestatic $inc、private __construct、__clone、public getInstance )...为了利用PDO安全性,因此在拼接SQL时,需要将用户输入参数使用占位符进行替换(即在拼接时使用冒号+字段名,或者使用问号),并且在完成sql拼接以及PDO类prepare方法后,使用PDOStatement

2.8K80

PHP PDOStatement::fetchAll讲解

PDOStatement::fetchAll PDOStatement::fetchAll — 返回一个包含结果集中所有行数组(PHP 5 = 5.1.0, PECL pdo = 0.1.0) 说明...PDO::FETCH_CLASS :返回指定类实例,映射每行列到类中对应属性名。 PDO::FETCH_FUNC :将每行作为参数传递给指定函数,并返回调用函数后结果。...返回值 PDOStatement::fetchAll()返回一个包含结果集中所有剩余行数组。此数组每一行要么是一个列值数组,要么是属性对应每个列名一个对象。...使用此方法获取大结果集将导致系统负担加重且可能占用大量网络资源。与其取回所有数据后用PHP来操作,倒不如考虑使用数据库服务来处理结果集。...例如,在取回数据并通过PHP处理前,在SQL 中使用 WHERE 和 ORDER BY 子句来限定结果。 实例 获取结果集中所有剩余行 <?

1.1K31

PHP中用PDO查询Mysql来避免SQL注入风险方法

虽然可以用mysql_real_escape_string()函数过滤用户提交值,但是也有缺陷。而使用PHPPDO扩展 prepare 方法,就可以避免sql injection 风险。...PHP6中也将默认使用PDO方式连接,mysql扩展将被作为辅助 。...1、PDO配置 使用PDO扩展之前,先要启用这个扩展,PHP.ini中,去掉"extension=php_pdo.dll"前面的";"号,若要连接数据库,还需要去掉PDO相关数据库扩展前面的";"号...ID PDOStatement::fetch()是用来获取一条记录 PDOStatement::fetchAll()是获取所有记录集到一个集合 PDOStatement::fetchColumn()是获取结果指定第一条记录某个字段...虽然你可以配置文件中设置字符集属性(charset=utf8),但是需要格外注意是,老版本 PHP( 我们来看一段完整代码使用实例: $dbh = new PDO("mysql:host=localhost

2.3K80

细说php入门学习

函数技巧 变量技巧 可变变量: 将一个变量作为另一个变量名 来使用 引用变量 函数技巧 可变函数: 将一个变量作为函数名 来使用 引用函数: 通过 &符 将内存地址赋予 // 引用函数例.../U 忽略空白 X 匹配结果忽略空白 大小写匹配 i 匹配结果区分大小写 单次匹配函数 preg_match( 正则, 对象, 结果) 结果是一个数组 返回每个匹配到原子 返回值时1或者0...过滤不符合正则规定格式 ​ 2. **一般向后引用一起使用** ​ 3....$this 伪对象 $this 不需要声明,直接代表当前对象 只能在 类内 使用 一般用于类内操作属性 或 方法 伪对象使用方法 ———- (以下内容方法是在写 类内部!!!...对象 例: 通过 PDOStatement 获取数据 PDOStatement -> fetch ( 参数 ) 获取一条数据 PDOStatement -> fetchAll ( 参数 ) 获取所有数据

3.6K20
领券