【发布时间】:2012-01-07 02:54:53
【问题描述】:
我从 java 得到一个字符串:“2011-11-25 08:16:50” post_date 列是 TIMESTAMP 但是下面的查询没有给出任何结果。错误是什么?
$date2 = $_POST['Date'];
$result= mysql_query("Select * FROM (Select * FROM user WHERE latitude > $minLat AND latitude < $maxLat AND longitude > $minLon AND longitude < $maxLon AND post_date > $date2 ORDER BY post_date DESC LIMIT $amount1) a ORDER BY post_id");
while($results = mysql_fetch_assoc($result))
$output[]=$results;
print(json_encode($output));
mysql_close();
【问题讨论】:
-
你能澄清一下是根本没有输出,还是一个空的 JSON 数组?无论哪种方式,您都没有进行任何错误检查。您需要在
mysql_query()通话后执行此操作。否则,如果查询失败,您的脚本将中断。 manual onmysql_query()或此reference question. 中概述了如何执行此操作 -
另外,您显示的代码容易受到SQL injection 的攻击。使用正确的库清理方法(如经典 mysql 库的
mysql_real_escape_string()),或切换到 PDO 和准备好的语句。 -
请将查询编辑为 $result= mysql_query("Select * FROM (Select * FROM user WHERE latitude > $minLat AND latitude $minLon AND longitude $date2 ORDER BY post_date DESC LIMIT $amount1) 一个 ORDER BY post_id") 或 die(mysql_error());并给我们错误,我认为这是 mysql 的语法错误