2012-04-10 2 views
3

안녕하세요 again Stackoverflow! 2 MySQL에 관한 질문.MySQL : 좋아요 및 첫 번째 문자

 $query = " SELECT 
         stationname 
        FROM 
         stations 
        WHERE 
         stationname >= '". mysql_real_escape_string($_GET['letter']) ."' 
        ORDER BY 
         stationname 
     "; 

Firstoff, 여기는 첫 번째 쿼리입니다. URL에는 알파벳 문자가 포함 된 $_GET['letter'] 매개 변수 집합이 있습니다. stationname이 (가) $_GET['letter']으로 시작하는 모든 행을 선택하려고합니다. 그래서 다른 Stackoverflow 주제 에서이 솔루션을 발견하지만, 작동하지 않는 것, 나는 내 모든 행을 얻을뿐만 아니라 그 하나. 을 편집하십시오 : stationname에있는 모든 문자를 확인한 것 같습니다. 시작 문자가 아니라 어떻게 가져올 수 있습니까?

 $query = " SELECT 
         stationname 
        FROM 
         stations 
        WHERE 
         stationname 
        LIKE 
         '". mysql_real_escape_string($_POST['search']) ."' 
     "; 

두 번째이자 마지막 질문입니다. stationname$_POST['search']이 포함 된 모든 행을 선택하여 내 웹 사이트의 검색 엔진을 만들고 싶습니다. 하지만 2 행, cheese라는 예를 들어 하나 cheese2라는 다른 하나를 가지고 있고, 내가 cheese을 검색 할 때, 단지 cheese 선택 얻을, 나는 cheese2을 검색 할 때, 단지 cheese2 선택 얻을 것이다. cheesecheese2을 모두 선택할 수 있습니까?

+2

'LIKE. $ _ POST이는 mysql_real_escape_string %'.)"% '를'그 – hjpotter92

답변

11

LIKE은 와일드 카드를 지원합니다. %는 (0을 포함) 문자의 수를 의미하며, _ 어느 한 character`가

stationname LIKE 'cheese%' 

cheesecheese2 일치하는 것을 의미한다.

첫 번째 문제에도 %을 사용할 수 있습니다.

stationname LIKE 'a%' 

여기에는 'a'으로 시작하는 모든 단어가 있습니다.

+0

감사합니다. 제 편집 내용을 확인해 주시겠습니까? – Thew

+1

+1에 대해 '_', 알지 못했습니다 – mkk

+0

@ Thehe : 시작 문자를 의미합니까? 'stationname LIKE 'a %' '는 작동하지 않습니까? –

3

초.

$query = " SELECT 
         stationname 
        FROM 
         stations 
        WHERE 
         stationname 
        LIKE 
         '". mysql_real_escape_string($_POST['search']) ."%' 
     "; 
+0

도 먼저 사용할 수 있습니다. – hkutluay

+0

감사합니다. 제 편집 내용을 확인해 주시겠습니까? – Thew

+1

@ 위의 쿼리는 시작 문자 만 검사합니다. – hkutluay

1

의 MySQL의 텍스트 와일드 카드는 첫 번째 쿼리에 대한 그래서 당신은 아마 싶은 %입니다 : 내가 선택하기 위해 노력하고있어

$query = " SELECT 
        stationname 
       FROM 
        stations 
       WHERE 
        stationname 
       LIKE 
        '%". mysql_real_escape_string($_POST['search']) ."%' 
    "; 
4

:

$query = " SELECT 
        stationname 
       FROM 
        stations 
       WHERE 
        stationname LIKE '". mysql_real_escape_string($_GET['letter']) ."%' 
       ORDER BY 
        stationname 
    "; 

그리고 두 번째 쿼리에 대한

stationname이 $ _GET [ 'letter']로 시작하는 모든 행

MySQL에는이 있습니다.당신이 찾고있는 것으로 보이는 기능. 그래서 기본적으로 우리가 stationname의 첫 글자를 추출하고 비교가 편지를 전년도 :

where left(stationname, 1) = '" . mysql_real_escape_string($_GET['letter']) . "'"; 

치즈와 cheese2을 모두 선택하는 방법은 없나요?당신이 cheesecheese2에 포함되어 있으며 여부 cheese2cheese에 포함되어 있는지 여부를 확인해야합니다으로

는 자, 여기이 솔루션은, 약간의 냄새입니다. 이 시도 : "([검색 '] 전화 번호에 대한

where stationname like '%" . mysql_real_escape_string($_POST['search']) . 
    "%' OR '" . mysql_real_escape_string($_POST['search']) . 
    "' like concat('%', stationname, '%')"; 
0

(5)가 발견 한 첫 번째 문자

$Sql="SELECT * FROM customers WHERE TEL REGEXP '^[5]' LIMIT 0,500"; 
관련 문제