-1

我正在尝试使用 mysql select 仅返回某个列“类别”包含 id 的结果,例如在字段中可能有“1,2,4”。我想使用一个变量来查看该 id 是否存在于该字段中。

到目前为止的代码:

   function returnSQLByCategory($criteria) {
    $lat = $criteria['lat'];
    $lng = $criteria['lng'];
    $categoryid = $criteria['categoryid'];
    $page_number = $criteria['page_number'];
    $nb_display = $criteria['nb_display'];

    //if($page_number=='') $page_number=1;
    //if($nb_display=='') $nb_display=10;
    $start = ($page_number*$nb_display)-$nb_display;

    $sql = "SELECT company, name, lng, lat, address, city, country, zip, link,
    ( 3959 * acos( cos( radians('".mysql_real_escape_string($lat)."') ) * cos( radians( lat ) ) * cos( radians( lng ) - radians('".mysql_real_escape_string($lng)."') ) + sin( radians('".mysql_real_escape_string($lat)."') ) * sin( radians( lat ) ) ) ) AS distance 
    FROM locations WHERE categoryid LIKE '%$categoryid%'";

    $sql .= " ORDER BY distance";

    return $sql;
    }

这不起作用,并且必须返回“1”,因为我只能看到 categoryid 为“1”的行。如果我手动输入语句“2”或示例,它会按预期工作!

非常感谢帮助,谢谢。

4

3 回答 3

0
SELECT 
    company, 
    name, 
    lng, 
    lat, 
    address, 
    city, 
    country, 
    zip, 
    link 
FROM 
    locations 
WHERE 
    MATCH (categoryid) AGAINST ($categoryid IN BOOLEAN MODE)

使用 MATCH 怎么样,尽管您的类别 ID 字符串需要用一个空格分隔,而不是逗号分隔。ie('1 2 3 4') 并在你的 sql 语句中用单引号括起来。

于 2012-08-03T11:20:38.277 回答
0

你为什么不使用 IN ?

categoryid IN ('.$categoryid.')
于 2012-08-03T11:00:18.850 回答
-1
$categoryid = 1;
$categoryid = mysql_real_escape_string($categoryid);

$sql = "SELECT * FROM `locations` WHERE categoryid = '$categoryid'";

$result = mysql_query($sql);
于 2012-08-03T11:02:02.793 回答