PHP PDO prepare/execute 对拼接字段的问题

修改DZ使用pgsql,数据库日志里面一个错误:

 

错误: 无效的整数类型输入语法: "192.168.0.5"
语句: SELECT s.sid, s.styleid, ...
FROM sessions s, members m
WHERE m.uid=s.uid AND s.sid='A3RO' AND (s.ip1 || '.' || s.ip2 || '.' || s.ip3 || '.' || s.ip4)=$1 AND m.uid=$2
AND m.password=$3 AND m.secques=$4
 

查看代码:

 

$sth = $dbh->prepare("SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, s.pageviews AS spageviews, s.lastolupdate, s.seccode, $membertablefields
  FROM {$tablepre}sessions s, {$tablepre}members m
  WHERE m.uid=s.uid AND s.sid='$sid' AND 
        (s.ip1 || '.' || s.ip2 || '.' || s.ip3 || '.' || s.ip4)=? AND m.uid=?
			AND m.password=? AND m.secques=?");
 

 

经过测试,对于 (s.ip1 || '.' ... s.ip4) 这样的拼接字段不能绑定数据去preare。修改为如下后解决:

$sth = $dbh->prepare("SELECT s.sid, s.styleid, s.groupid='6' AS ipbanned, s.pageviews AS spageviews, s.lastolupdate, s.seccode, $membertablefields
  FROM {$tablepre}sessions s, {$tablepre}members m
  WHERE m.uid=s.uid AND s.sid='$sid' AND 
      (s.ip1 || '.' || s.ip2 || '.' || s.ip3 || '.' || s.ip4)='$onlineip' AND m.uid=?
	AND m.password=? AND m.secques=?");
 

 

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值