【发布时间】:2011-08-02 08:02:24
【问题描述】:
我正在尝试通过 db 列中包含的单词过滤 sql 查询。
这是有效的(请不要告诉我Having 是错误的......它不适用于Where)
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( `Lat` ) ) * cos( radians( `Long` ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( `Lat` ) ) ) ) AS distance FROM Tutors HAVING distance < '%s' ORDER BY distance",
mysql_real_escape_string($lat),
mysql_real_escape_string($lng),
mysql_real_escape_string($lat),
mysql_real_escape_string($radius));
$result = mysql_query($query, $dbConn);
我想添加如下内容:
$query = sprintf("SELECT *, ( 3959 * acos( cos( radians('%s') ) * cos( radians( `Lat` ) ) * cos( radians( `Long` ) - radians('%s') ) + sin( radians('%s') ) * sin( radians( `Lat` ) ) ) ) AS distance FROM Tutors HAVING distance < '%s' AND SubjectList like '%s' ORDER BY distance",
mysql_real_escape_string($lat),
mysql_real_escape_string($lng),
mysql_real_escape_string($lat),
mysql_real_escape_string($radius),
mysql_real_escape_string($subject));
$result = mysql_query($query, $dbConn);
【问题讨论】:
-
printf 你的查询格式真的很复杂,所以请说出你想看的内容。
-
@EmCo:错了。您可以随时使用
having。你必须使用group by的唯一一次是你正在使用聚合函数 -
我想知道问题是否在于我正在使用 escape_string %s 并且在使用 LIKE 时该字符串通常是 %biology%
-
如果您在执行此操作时比较两个数字
distance < '%s',这可能是您的问题。试试这个:distance < s. -
那也没用。是否可以在下面使用第一个查询的结果进行另一个查询?
标签: php mysql sql-like contains