php的准备查询,php – 安全地使用预准备语句来查询数据库

我可能弄错了,但我不相信你可以在PDO中提供字段作为参数.

为什么不将它指定为函数的参数?与用户提供的数据不同,字段是有限的,定义良好且不经常更改.如在

selectquery('name',$value);

并有你的查询

$field = "name";

$value = "joe";

function selectquery($field, $value)

{

global $dbcon;

$select=$dbcon->prepare("SELECT * FROM tester1 WHERE $field = :value");

if($select->execute(array(':value' => $value)));

//etcetera

由于您自己为函数调用提供字段名称,因此除非您担心自己会使用SQL注入攻击自己,否则这是安全的.

如果由于某些奇怪的原因,该字段的名称来自用户输入,您可以创建一个允许字段数组.这样,您就可以安全地进行注射,因为这些值只能来自您的数组.我不知道为什么字段名称来自用户输入,因此不受信任,除非您正在制作API?另外,可能有更好的方法来实现目标.

无论如何,这将是一个潜在的解决方案,使用白名单表名:

$field = "name";

$value = "joe";

$allowed_fields=array('name','other_name','sandwich');

function selectquery($field_name, $value)

{

global $dbcon,$allowed_fields;

if(!in_array($field_name,$allowed_fields)){ return false; }

else{ $field=$field_name; }

$select=$dbcon->prepare("SELECT * FROM tester1 WHERE $field = :value");

if($select->execute(array(':value' => $value)));

//etcetera

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值