2014-08-09 1 views
0

간단히 말하면 전체 행에서 URL을 통해 구문 분석되는 5 자리 숫자를 검색하려고합니다. 전체 표 행에서 5 자리 숫자를 검색 하시겠습니까?

내가 지금까지 가지고있는 코드입니다 : "유효 코드"

$code = $_GET['code']; 
$connect = mysqli_connect("localhost", "root", "", "test") or die("Could not connect to database!"); 

$query = mysqli_query($connect, "SELECT * FROM codes"); 

while($row = mysqli_fetch_array($query)) 
{ 
    if($code == $row['code']) 
    { 
     echo "Code valid"; 
     break; 
    } 
    else 
    { 
     echo "Invalid code"; 
     break; 
    } 
} 

이 코드는 부분적으로 작동하지만 출력 데이터베이스 (12345)의 첫 번째 값을 구문 분석 할 때

여기서 몇 번 언급 한 MySQL LIKE 절을 보았지만 지금까지는 작동하지 못했습니다. 나는 아직도 꽤 아마추어 다. 그래서 내가 완전히 무언가를 놓치면 사과한다.

+0

http://www.tizag.com/mysqlTutorial/ –

+0

가장 좋은 방법은 일부 정렬의 'WHERE' 절을 기반으로 관심있는 행만 반환하도록 쿼리를 변경하는 것입니다. –

+0

하나 이상의 행을 검사하려면 코드에서 'break;'를 제거하십시오 (처음 행만 확인한 다음 while 루프를 중단하는 순간). – Lenny

답변

2

다음과 비슷한 것을 사용하려는 경우이 기능을 사용하려면 다음을 수행하십시오. %은 와일드 카드로 사용되어 쿼리의 양쪽에있는 항목과 일치시킵니다. 위생없이

SELECT * FROM codes WHERE code LIKE '%12345%' 

아니면 SQL에 코드

$query = mysqli_query($connect, "SELECT * FROM codes WHERE code LIKE '%" . $code . "'"); 

그러나 직접 입력에서

나쁜 방법입니다. 다음은 더 나은 옵션이지만 PDO를 사용하는 것이 가장 좋습니다. 코드를 사용하여

$code = filter_input(INPUT_GET, 'code', FILTER_SANITIZE_NUMBER_INT); 
$sql = "SELECT * FROM codes WHERE code = {$code}"; 

모든 결과를 원하는 경우, : 코드는 다음과 같은

if(mysqli_num_rows($query) > 0) { 
    echo "Code Valid"; 

    while($row = mysqli_fetch_array($query)) { 
     /* Output of codes if wanted */ 
    } 
} else { 
    echo "Invalid code"; 
} 
+0

코드가 거의 작동하지만 잘못된 코드가 구문 분석 될 때 오류 메시지가 표시되지 않습니다. – will

+0

반환 된 레코드가 있는지 확인하려면 mysqli_num_rows를 사용하여 반환 된 레코드 수를 쿼리해야합니다. '0'이면 실패 할 것이다. 업데이트 답변을 –

+0

그냥 내가 찾고 있던 대답! 당신의 도움을 주셔서 감사합니다. – will

0

사용에 WHERE 절을 당신의 while 문을 바꿀 것 유효한 경우

$query = mysqli_query($connect, "SELECT * FROM codes WHERE code LIKE '%" . mysqli_real_escape_string($code) . "'"); 

확인하려면 표시하려면 단순히 코드에서 break; 문을 제거하십시오. 그들은 루프를 멈춘다.

관련 문제