php中mysql参数绑定详解

2 篇文章 0 订阅

参数绑定详解

CDbCommand表示一个针对数据库执行的SQL语句,CDbCommand支持SQL语句预处理和参数绑定。 调用 bindParam 去绑定一个PHP变量到SQL中的一个参数。 调用 bindValue 去绑定一个值到一个SQL参数。 当绑定一个参数时,此SQL语句将自动准备好。 也可以调用prepare去明确的准备一条SQL语句。

 

参数形式:

1、  普通绑定

以变量命名的占位符:

<?php
/* Execute a prepared statement by binding PHP variables */
$calories 150;
$colour 'red';
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < :calories AND colour = :colour'
);
$sth->bindParam(':calories'$caloriesPDO::PARAM_INT);
$sth->bindParam(':colour'$colourPDO::PARAM_STR12);
$sth->execute();
?>

未标记的占位符:

<?php
/* Execute a prepared statement by binding PHP variables */
$calories 150;
$colour 'red';
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?'
);
$sth->bindParam(1$caloriesPDO::PARAM_INT);
$sth->bindParam(2$colourPDO::PARAM_STR12);
$sth->execute();
?>

 

2、  使用循环的方式绑定参数时,参数绑定的是地址不是值

正确:

<?php

foreach($params as $key => &$val) {

$sth->bindParam($key, $val);

}

?>

失败:($val by value, because bindParam needs&$variable):

<?php

foreach ($params as $key => $val) {

  $sth->bindParam($key, $val);

}

 

3、 like绑定

错误:

"SELECT* FROM `users` WHERE `firstname` LIKE '%:keyword%'";

没有%时"SELECT * FROM `users` WHERE`firstname` LIKE :keyword";

这样是可以的

如果有%那么必须先将$keyword ="%".$keyword."%";

命名为另一个变量然后在绑定就可以。

例如:


备注:以上变量占位符与?占位符不能混用,否则会报错。

4、  in的绑定方案

在in包含数据是整数时,


例如这一个,返回的数据只有25相关的,只提取了第一个,之前的数据。

所以在绑定in时,需要将in里面的每一个变量单独绑定才能真实的出现所需完整数据。


利用的是?占位符的无命名性来先统计数据个数,然后在循环绑定。所以in中的数据必须是每一个都能实体的数据。

绑定普通字符串时:


 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值