2013-08-07 3 views
-1

PHP에서 MySQL 데이터베이스의 정보를 가져 오는 코드가 있고 $ username 변수를 strpos() 함수의 정보와 비교하려고합니다.하지만 작동하지 않습니다. .. 나는 무엇을 할 수 있습니까? 대신 ==와 바로 비교의 strpos을 사용하는 이유는 'mysql_fetch_array의 strpos() 함수

$username = $_GET['username']; 
$connection = new DB_Database(); 
$res = $connection->Select(); 
if ($res) { 
$output = ""; 
while ($row = mysql_fetch_array($res)) { 
    if (strpos((string)$row['username'], $username)) { 
     $output.=" " . $row["username"] . " "; 
    } 

echo $output; 
+2

"작동하지 않습니다."는 유효한 문제 설명이 아닙니다. – PeeHaa

+3

왜이 비교를 SQL 쿼리의 일부로 시작하지 않습니까? 또한'strpos' 매뉴얼 페이지에 설명 된대로'== 0'과'=== false'의 차이를 잊어 버렸습니까? – deceze

답변

1

는 잘 모르겠어요,하지만이 코드는 $row['username'] == $username 경우 제대로 작동하지 않을 것입니다. documentation page에 거대한 빨간색 경고가 표시 -

이유는이 경우 strposfalse로 평가하는 0을 반환한다는 것입니다.

+0

"mikes peters"에서 "mik"와 같은 것을 찾고 싶습니다. 데이터베이스에 "username"이라는 행이 있습니다. 문자열을 사용하여 이름을 검색하려고합니다. strpos()를 사용하는 이유는 다음과 같습니다. –

+0

@PouyanIzadi :이 경우'strpos (...)! == false'가 작동합니다. 하지만 이것은 검색을 구현하는 정말 나쁜 방법 일 것입니다. 대신'WHERE username LIKE % : param %'와 같은 것으로 필터링 로직을 SQL로 옮기십시오. – Jon