永发信息网

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

答案:3  悬赏:0  手机版
解决时间 2021-11-24 02:31
  • 提问者网友:佞臣
  • 2021-11-23 10:01
sql查询语句有php变量时查询不到
最佳答案
  • 五星知识达人网友:三千妖杀
  • 2021-11-23 11:36
你没有搞清楚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,.........用这种形式查询返回,你要几个字段就写几个字段,除非你所有字段都要用到,那就用*号
*号在计算机中是通配符,表示所有
追问初学者,原谅一下吧,不加引号会提示错误
Warning: mysql_fetch_assoc() expects parameter 1 to be resource, boolean given in E:\PHPsite\test2.php on line 34
是不是数据库设计的问题?数据库中的字段是float型。还是其他问题?能否加阁下QQ咨询啊追答警告:mysql_fetch_assoc()预计参数1是资源型,布尔在E中给出:\ PHPsite\ test2.php上线34

出现这个错误,表示mysql_query()函数执行不成功,也可以理解为sql语句运行不成功

开发程序,在开发阶段,特别是在对数据库进行操作的时候,建议输出mysql错误信息,方便分析错误原因

函数:mysql_error();
这个函数的作用是,返回上一次操作mysql数据库的错误信息

mysql_query( $Sql ) or die('查询失败,错误信息是:' . mysql_error());

这样运行一下,如果出错,就看看是什么提示信息,一段英文,然后去谷歌翻译一下,当然,阁下应该懂英语吧,我是不懂,所有我是得翻译一下!

至于QQ,问题是百度这里不让发QQ!
要不你私信我一下?追问我这边显示你是热心网友,我看不到你的id追答3+6+9+7+五+八+4+8+2
全部回答
  • 1楼网友:慢性怪人
  • 2021-11-23 13:41

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

$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还是有问题?另外看我的资料加我
  • 2楼网友:杯酒困英雄
  • 2021-11-23 12:14
首先,你这个$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语句换成这样的试试。
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯