2017-01-03 5 views
0

나는 이것을 며칠 동안 붙들 었다고 말하면서 서언 하리라. 나는 분명히 새로운 것이고, 내가 간단한 것을 놓치고 있다는 것을 안다. 나는 많은 방법을 시도했다. 보안은 아직 문제가 아니며 나는 단지 내 서버에서 배우려고 노력하고 있습니다.값이 데이터베이스에 있는지 확인하십시오.

가치가 없다는 것을 알고 있더라도 항상 '발견 된 것'을 얻습니다. 입력란에 구문을 입력하고 제출을 눌러 값이 이미 테이블에 있는지 확인하십시오.

바보 같은 질문에 사과드립니다.

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
// error_reporting(0); 
// ini_set('display_errors', 0); 
// exit(); 
//echo '<pre>'; print_r($user_info); echo '</pre>'; 

if ((isset($_POST['lookup'])) && ($_REQUEST['lookup'] =='1')) { 
    echo 'you\'ve entered a keyword, lets see if it exsists!'; 
    $looksql = "SELECT * FROM `crm3`.`keywords` WHERE `KW0` LIKE '".$_POST['lookup']."' ORDER BY `ID` ASC "; 
    if ($result = mysqli_query($db, $looksql)) { 
     echo '<br>someting found'; 
    } else { echo '<br>nothing found'; } 
} else { 
    echo '<br>please enter a keyword to start the search'; 
} 
?> 

<br><br><br> 
<form method="POST" action="./?action=kwcheck"> 
    <input type="hidden" name="lookup" value="1" /> 
    keyword lookup: <input type="text" name="keyword" /><br> 
    <input type="submit" value="SEARCH" /> 

답변

2

조건을 제외한 모든 것을 거의 완료했습니다. 귀하의 상태는 항상 진리 값을 제공합니다. 그것은해야한다 :

// Query the MySQL server. 
$result = mysqli_query($db, $looksql); 
if (mysqli_num_rows($result)) { 
    // Rows are there. 
    echo '<br>someting found'; 
} else { 
    // No rows are there. 
    echo '<br>nothing found'; 
} 

당신이 기능, 당신은 부울 값을 반환하는 함수 만들 수 있습니다 원하는 경우 :하지 않으면 항목, false를 발견하는 경우, true을.

function recordsCount($looksql) { 
    // Get the connection from global scope. 
    global $db; 
    // Query the MySQL server. 
    $result = mysqli_query($db, $looksql); 
    // Return if the count is greater than 0 or not. 
    return (mysqli_num_rows($result) > 0); 
} 

보안 문제 :를 사용하여 쿼리를 매개 변수화. 쿼리에 $_POST (또는 사용자 입력 $_GET, $_COOKIE 등)을 넣으면 SQL 주입이 열립니다. 또한 정확한 일치를 원하면 LIKE이 아니라 =을 사용하십시오. LIKE은 부분 일치이고 와일드 카드 (%)를 사용해야합니다. chris85에게 감사드립니다.

+1

감사합니다. 이제 작동합니다! –

+0

내 쿼리가 잘못되어 계속 오류가 발생했습니다. 다음과 같아야합니다 : $ _POST [ 'lookup'] 대신 'code'$ _POST [ 'keyword'] 아마도이 한 걸음을 내딛을 수 있습니다. 추가로 결과의 행 ID를 표시합니까? –

+0

@DavidWatson 네, 맞습니다. –

0

쿼리 그럼 그렇게 에코 메시지를 실행하는 경우 조건이 항상

$result = mysqli_query($db, $looksql);  
if (mysqli_num_rows($result)) { 
    echo '<br>someting found'; 
} 
+0

내 대답과 어떻게 다릅니 까? 그냥 궁금해서. –

+0

@PraveenKumar 나는 당신의 대답이 틀리거나 다른 어떤 것도 말하지 않았다. – user1234

+0

적어도 코드의 서식을 지정하거나 들여 쓰기 할 수있다. –

-1

당신은 시도 할 수있는 코드 아래 진정한 시도 할 경우처럼이기 때문에 당신은 항상 실행되는 코드 위

if ($result = mysqli_query($db, $looksql)){// this is always true as query will be executed always  
    echo '<br>someting found';  
} 

잘못했을 이 :후

$looksql = "SELECT * FROM `crm3`.`keywords` WHERE `KW0` LIKE '%".$_POST['lookup']."%' ORDER BY `ID` ASC "; 

사용 %210

+1

이것은 OP가 결과를 얻는 이유를 설명하지 못합니다. OP가 결과를 얻지 못하면 대답 일 수 있습니다. – chris85

+0

예! 그리고 감사합니다 당신이 $ result = mysqli_query ($ db, $ lookql) 그냥 결과의 개체를 반환합니다 –

관련 문제