2010-01-30 3 views
1

사용자가 입력 한 주소와 같은 사람을 나열하려면 구문은 무엇입니까? 여기에 제 코드가 도움이됩니다. 입력 양식은 주소가됩니다. 나는 이런 식으로 뭔가를 할 : http://dev.mysql.com/doc/refman/5.0/en/pattern-matching.htmlPHP의 LIKE 문

<?php 
     $con = mysql_connect("localhost","root",""); 
     if (!$con) 
     { 
     die('Could not connect: ' . mysql_error()); 
     } 

     mysql_select_db("Hospital", $con); 

     $result = mysql_query("SELECT * FROM nais WHERE ADDRESS='{$_POST["address"]}'"); 

     echo "<table border='1'> 
     <tr> 
     <th>HospNum</th> 
      <th>RoomNum</th> 
      <th>LastName</th> 
      <th>FirstName</th> 
     <th>MidName</th> 
      <th>Address</th> 
     <th>TelNum</th> 
      <th>Nurse</th> 
     </tr>"; 

      while($row = mysql_fetch_array($result)) 
      { 
       echo "<tr>"; 
    echo "<td>" . $row['HOSPNUM'] . "</td>"; 
    echo "<td>" . $row['ROOMNUM'] . "</td>"; 
    echo "<td>" . $row['LASTNAME'] . "</td>"; 
    echo "<td>" . $row['FIRSTNAME'] . "</td>"; 
    echo "<td>" . $row['MIDNAME'] . "</td>"; 
     echo "<td>" . $row['ADDRESS'] . "</td>"; 
     echo "<td>" . $row['TELNUM'] . "</td>"; 
     echo "<td>" . $row['NURSE'] . "</td>"; 

    echo "</tr>"; 
    } 
    echo "</table>"; 

     mysql_close($con); 
+2

(* 힌트 *) 누군가가 '1'을 검색하는 것을 원하지 않으므로 DROP TABLE nais --' – Gordon

+0

@Gordon : MySQL에서는 작동하지 않습니다. 물론이 코드가 SQL 인젝션을 위해 열려 있다는 것은 당연합니다 ... – Franz

+0

@ Franz : Gordon에서 제공 한 SQL Injection이 작동하지 않는 이유를 모르겠습니다 ... –

답변

4

이 시도 : 또한 준비된 명령문 또는 mysql_real_escape_string()을 사용해야합니다

$result = mysql_query("SELECT * FROM nais WHERE ADDRESS LIKE '%" . $_POST['address'] . "%';"); 

, SQL Injections를 참조하십시오.