2014-10-04 1 views
0

데이터베이스에서 데이터를 안전하게 검색하기 위해 PDO를 사용해야한다고 들었습니다.안전한 PDO mySQL SELECT 문 (for 루프 포함)

$dbtype  = "sqlite"; 
$dbhost  = "localhost"; 
$dbname  = "test"; 
$dbuser  = "root"; 
$dbpass  = "admin"; 
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass); 

$firstName = htmlspecialchars($_POST["firstName"]); 
foreach($conn->query('SELECT * FROM employeeTable WHERE firstName = ' . $firstName) as $row) { 
    echo $row['lastName'].' '.$row['email']; 
} 

을하기 때문에 나에게 여전히 쿼리에 뭔가를 "주입"할 수있을 것이다 것 같습니다 :이 안전하거나 전혀 작동한다면 지금 궁금하네요.

그럼 내 질문에 : 정말 안전하고 정확히 어떻게 안전하게 만들지 않을까요?

답변

3

: 여기

$select = $conn->prepare('SELECT * FROM employeeTable WHERE firstName = :firstName'); 
$select->execute(array(':firstName' => $_POST["firstName")); 

while($row = $select->fetch(PDO::FETCH_ASSOC)) 
    echo $row['lastName'].' '.$row['email']; 
} 

좋은 읽기입니다 : 그리고 준비된 명령문의 실행 후에는 결과를 가져 오기 위해 필요 준비 과정은 주사를 없애는 것이다.

$sql = 'SELECT * FROM employeeTable WHERE firstName = :firstName'; 
$sth = $conn->prepare($sql); 
$sth -> bindParam(':firstName', $firstName); 
$sth -> execute(); 
$result = $sth->fetchAll(PDO::FETCH_OBJ); 
foreach ($result as $key => $value) { 
    echo $value->lastName, $value->email; 
}