sql查询语句有php变量时查询不到

$sql="select*fromer_memberwheregeo_longitude<='“.$nowLongitude_max.”'andgeo_longitude... $sql = "select * from er_member where geo_longitude<=' “ .$nowLongitude_max. ” ' and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";语句查询不到

$nowLongitude_max是一个数值,不比如109,直接换成109的话可以查询到,但是用php变量的话就查询不到了$nowLongitude_max 我用 floatval($nowLongitude_max);转换成float型了
展开
 我来答
匿名用户
2014-02-23
展开全部

你没有搞清楚sql语句的语法

如果你的字段是数字类型的,比如:int bigint 等字段类型,那值就不要加引号


你说的直接换成109可以查询到,估计应该是这样吧?

$sql = "select * from er_member where geo_longitude<=109 and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";

而你所说的有变量查询不到,而且$nowLongitude_max是一个数值,那么,你的sql运行后,应该是会变成这样:

$sql = "select * from er_member where geo_longitude<='109 ' and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";

你自己看看两条sql语句有什么不同啊?

更多追问追答
追问
echo输出的确是加引号这样子,数值不加引号你意思是写成  ‘$nowLongitude_max‘ 这种形式吗?我这样试了也查询不出来
追答

php能解析双引号内的变量,你既然使用了双引号,那好加引号做什么呢?岂不是多此一举?

$sql = "select * from er_member where geo_longitude<=$nowLongitude_max and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";

或者

$sql = "select * from er_member where geo_longitude<={$nowLongitude_max} and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";

就算你实在要加引号,那也应该是:

$sql = "select * from er_member where geo_longitude<=" . $nowLongitude_max ." and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";

看来阁下不但sql语句的语法不是很清楚,就是php中的引号怎么用,都不清楚!


例外,给你一个建议, 如果比如你的数据表有10个字段,但你只需要使用5个字段,那就不建议用

selec * 来返回所有字段,虽然这样做,效果都差不多,但显然不够优化,就好比,你要一担沙子,但你偏偏用车装一车来,虽然沙子都够用,可岂不是费力又费钱?

select 字段1,字段2,.........用这种形式查询返回,你要几个字段就写几个字段,除非你所有字段都要用到,那就用*号

*号在计算机中是通配符,表示所有

lin20090369
2014-02-23 · TA获得超过153个赞
知道小有建树答主
回答量:106
采纳率:0%
帮助的人:128万
展开全部

目测是中英文符号问题,修改后:

$sql = "select * from er_member where geo_longitude<=" .$nowLongitude_max." and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";

 

这里“ .$nowLongitude_max. ”的双引号是中文的,所以楼主不加单引号才会报错,但是加了双引号后,例如$nowLongitude_max=109的话,变量的值就是就是"109",所以才查询不出

追问
不加引号会提示错误
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\PHPsite\test2.php on line 34
追答
用我修改后的sql还是有问题?另外看我的资料加我
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
影翼视觉lyl
2014-02-24 · TA获得超过630个赞
知道小有建树答主
回答量:1279
采纳率:50%
帮助的人:677万
展开全部
首先,你这个$nowLongitude_max是一个赋值了的,所以后面就不用.隔开了,其次就是确保你这个$nowLongitude_max是有成功赋值的,或是内容有成功接收到
$sql = "select * from er_member where geo_longitude<='$nowLongitude_max' and geo_longitude>=107 and geo_latitude<=35 and geo_latitude>=33";
你把你sql语句换成这样的试试。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式