2009-08-03 6 views
1

SQL 쿼리 및 PHP에 대한 도움이 필요합니다.SQL 쿼리 및 preg_match

여기 코드의 조각이 있습니다
1.

$sql = "SELECT SUBSTR(n.`title`, 1,1) FROM node n WHERE n.`type` = 'type1'"; 
$results = db_query($sql); 
while ($fields = db_fetch_array($results)) { 
    foreach($fields as $key => $value) { 
    echo $value; 
    } 
} 

위의 코드는 나의 기사 제목의 첫 글자를 반환 (테이블 - 노드, 열 - 유형, 제목)이 등이 - NHDKFLF을 .. .

2.

if (preg_match ('/A/i', $string)) { 
    echo ('Contains letter A'); // 
} 
else { 
    echo ('Nothing'); // 
}  

그리고 문자열이 특정 문자가 포함되어있는 경우 두 번째 부분을 확인합니다.

이제 두 가지 코드를 결합하는 방법이 궁금합니다. DB에서 데이터를 가져 와서 특정 문자가 있는지 확인하는 방법입니다.

미리 감사드립니다.

답변

0

원하는 검색어를 검색하는 이유는 무엇입니까?

... where SUBSTR(n.`title`, 1,1) = 'A' ... 

당신이 다음 쿼리, 외부 코드에서 필터링해야하는 경우 :

foreach($fields as $key => $value) { 
    if (preg_match ('/A/i', $value)) { 
     ... 
} 
1

두 가지 옵션이 마음에 와서 : 당신이 지금 무슨 일을하는지? 아니면 수행 할 SQL을 다시 쓰기 한 번에.

옵션 1 :

$sql = "SELECT SUBSTR(n.`title`, 1,1) FROM node n WHERE n.`type` = 'type1'"; 
$results = db_query($sql); 
while ($fields = db_fetch_array($results)) { 
    foreach($fields as $key => $value) { 
    if (preg_match ('/A/i', $value)) { 
     echo ('Contains letter A'); // 
    } else { 
     echo ('Nothing'); // 
    } 
    } 
} 

옵션 2 :

$sql = "SELECT SUBSTR(n.`title`, 1,1) FROM node n WHERE n.`type` = 'type1' AND SUBSTR(n.`title`, 1,1) = 'A' "; 

프로젝트의 세부 사항의 나머지 부분에 따라 아마이 처리하는 더 나은 방법이있다.

+0

답장을 보내 주셔서 감사합니다. 첫 번째 옵션을 시도하면 다음과 같은 결과가 반환됩니다. NothingNothingNothing ... 문자 A를 포함합니다 ... NothingNothing ... 그 이유는 SQL 파트를 분리하여 어떻게 든 (첫 번째 문자가있는) 한 문자열을 얻고 싶었 기 때문입니다. 그런 다음 해당 문자열에 다음과 같은 특정 문자가 있는지 확인합니다. if (preg_match ('/ A/i', $ value)) { ... if (preg_match ('/ B/i', $ value)) { ... –