pdo 参数化查询 mysql函数_PDO:预处理语句(参数化查询)

PDO是PHP的数据库对象,支持多种数据库类型并提供预处理语句(参数化查询)功能。预处理语句通过PDO::prepare()创建,使用PDOStatement::execute()执行,能有效防止SQL注入。PDOStatement::bindParam()将变量绑定到参数,执行时读取变量值,适合循环执行。PDOStatement::bindValue()则直接绑定值。预处理语句中不能直接使用SQL函数,但可以将参数用于SQL函数。对于LIKE语句,应使用bindValue并正确格式化参数。
摘要由CSDN通过智能技术生成

@(PDO(PHP data object/PHP数据对象))[PDO|预处理语句|参数化查询]

The database library called PHP Data Objects or PDO for short can use drivers for many different database types, and supports a very important feature known as prepared statements, sometimes also known as parametrized queries.

PDO::prepare

f432fee5d901?from=singlemessage

Paste_Image.png

在执行之前,对一条语句进行预处理,并返回一个语句对象。

预处理一条 SQL 语句,以便 PDOStatement::execute() 方法执行。该 SQL 语句可以包含 0 或更多个命名参数(:name)或问号参数(?),这些参数的真实值在语句执行的时候会被替换掉。使用这些参数绑定所有的用户输入的数据,不要在查询中直接包含用户输入的数据。

返回值:

如果数据库服务器成功地预处理了该语句,PDO::prepare() 将会返回一个 PDOStatement 对象;否则,返回 false 或 抛出 PDOException(依 error handling 而定)。

模拟的预处理语句并没有与数据库服务器进行通信,所以PDO::prepare()并没有检查该语句。

PDOStatement::bindParam

f432fee5d901?from=singlemessage

Paste_Image.png

原来 PDO 官方手册的简要描述的描述顺序有点怪怪的,并且后面的详细描述也不一致。所以这里把简要描述跟详细描述中的描述顺序统一一下。

Binds the specified variable name to a parameter.

绑定 指定的变量名(只能是 $name 的形式)到 一个参数(:name 或 ?参数 ,可以是 :name 或 从1 开始的索引 的形式)。

绑定 一个 PHP 变量 到 预处理语句中对应的命名占位符或问号占位符。

与 PDOStatement::bindValue() 不同的是:PDOStatement::bindParam() 中的变量是作为引用而绑定的,并且只有在调用 PDOStatement::execute() 的时候才会读取这个变量的值。

Note we used bindValue and not bindParam. Trying to bind a parameter by reference will generate a Fatal Error and this

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值