php
  • sql
  • forms
  • search
  • 2012-11-14 2 views 0 likes 
    0

    폼을 사용하여 SQL 데이터베이스를 검색하고 화면에서 결과를 출력 할 수 있기를 기대합니다.SQL 쿼리 결과 출력하기 PHP

    $query = "SELECT * FROM documents WHERE DocumentName = '%".$DocumentName."%'AND county = '".$county."' OR acreage = '".$acreage."' AND grantor = '".$grantor."' OR grantee = '".$grantee."' ORDER by 'DocumentName'" ; 
    
    $result=$db->query($query); 
    $num_results=$result->num_rows; 
    echo "<p>Number of documents found: ".$num_results."</p>"; 
    for($i=0; $i <$num_results; $i++){ 
    $row=$result->fetch_assoc(); 
    echo"<p>".($i+1).".County: "; 
    echo htmlspecialchars(stripslashes($row['county'])); 
    echo "<br />Acreage: "; 
    echo stripslashes($row['acreage']); 
    echo "<br />Grantor: "; 
    echo stripslashes($row['grantor']); 
    echo "<br />grantee: "; 
    echo stripslashes($row['grantee']); 
    echo "<br />Lessor: "; 
    echo stripslashes($row['DocumentName']); 
    echo "<br />PDF: "; 
    echo stripslashes ("<a href=".$row['PDF'].">" .$row['PDF'] . "</a><br>"); 
    echo "</p>"; 
    } 
    
    $result->free(); 
    $db->close(); 
    

    그것은 선택하여 정보를 출력한다 :

    내 코드이다. 문제는 검색 양식을 비워 둘 수있는 사람이 필요하지만 모든 데이터가 표시된다는 것입니다. 그들이 카운티를 입력하고 다른 모든 것을 비워두면 나는 그 카운티 기록만을 끌어오고 싶습니다.

    +1

    'DocumentName ='% '. $ DocumentName. "%"'=>'DocumentName =' ". $ DocumentName." '' –

    답변

    0

    당신은 같은 where 절 조건 깰 수 :

    $where = ''; 
    $where .= empty(county) ? '' : "AND county='$county' "; 
    ... 
    

    을 그리고 쿼리에서 $where를 주입.

    0

    if(isset($_POST['country']) && strlen($_POST['country'])>0) echo ($i+1).".County: ". htmlspecialchars(stripslashes($row['county'])); 
    if(isset($_POST['acreage']) && strlen($_POST['acreage'])>0) echo "<br />Acreage: ". stripslashes($row['acreage']); 
    // ... 
    
    0

    나는 값이 설정되어있는 게시물을 확인하고 저장 위치를 ​​배열 조건 및 다음 사용하는 것이 좋습니다 것입니다 (관련 양식 필드가 비어 보내고되지 않은 경우에만 해당 데이터를 표시하는) 이런 식으로 뭔가를 시도 implode을 사용하여 쿼리에 사용할 문자열을 만듭니다.

    if(isset($_POST['country']) && strlen($_POST['country'])) { 
        $where[] = "country = '$country'"; 
    } 
    if(isset($_POST['acreage']) && strlen($_POST['country'])) { 
        $where[] = "acreage = '$acreage'"; 
    } 
    .... 
    $where = isset($where) ? ' WHERE '.implode(' AND ',$where) : ''; 
    $query = 'SELECT * FROM documents'.$where; 
    

    그것은 또한 당신이 SQL 주입 공격으로부터 더 보호가 없다는 것을 주목할 가치가있다, 당신은 당신의 입력을 소독해야합니다.

    관련 문제