SQL_MODE设置之ansi_quotes

  今天做项目,一个sql语句  原本是用字符串拼接的,参考如下:

'SELECT  COUNT(DISTINCT mac,diskid,systeminstalltime) as total_uv, COUNT(DISTINCT ip) as total_ip FROM sta 
          WHERE daytime='.$daytime.' && TYPE='.$type.' GROUP BY channel;'
开始没太在意,因为我也是新手,老大说要改个东西。涉及到改动sql语句,要增加一个条件,然后增加了 一下:eg
$sql='SELECT channel, COUNT(*) as total_pv, COUNT(DISTINCT mac,diskid,systeminstalltime) as total_uv, COUNT(DISTINCT ip) as total_ip FROM 1188_stats
      WHERE  TYPE=1 or TYPE=2 && ver="3.0.1.5103" and daytime=$daytime GROUP BY channel';

这条语句本身在mysql是可以执行的 也不报错,但是放到程序中,就是报错  说ver这列有错 本身也就加了这一个条件。然后开始调试,因为用的medoo  就查错,发现提示说找到不到ver这列,大体意思是 没有这列在表中,但是很郁闷,不可能, 最后,没调试出来,找了老大,说是数据库编码的问题    
	mysql ansiquotes   启用ANSI_QUOTES后,不能用双引号来引用字符串,因为它将被解释为识别符。

好吧,后来改成:
SELECT  COUNT(DISTINCT mac,diskid,systeminstalltime) as total_uv, COUNT(DISTINCT ip) as total_ip FROM 1188_stats
      WHERE daytime=' . $daytime .' && TYPE=2' .' && ver!=\'3.0.1.5103\''. ' GROUP BY channel
对引号做了转义,搞定,希望能帮助到没遇到过这个错误的人!新手勿喷,点滴积累,汇聚成河

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值