2013-05-17 2 views
0

많은 수의 PDO 사용 예제가 있지만 mysql_query에서 PDO 문으로 성공적으로 변환 할 수 없었습니다.mysql_query를 PDO 문으로 변환

가 여기에 작동하지만 안전하지 않습니다 무엇 :

<?php 
$db = mysql_connect("localhost","username","passphrase"); 
mysql_select_db("database",$db); 
$cat= $_GET["cat"]; 
/* grab a row and print what we need */ 
$result = mysql_query("SELECT * FROM cat WHERE cat = '$cat' ",$db); 
$myrow3 = mysql_fetch_row($result); 
echo "$myrow3[2]"; 
/* here's an array */ 
echo '<div class="container">'; 
$q = mysql_query("SELECT * FROM name WHERE Field4 = '$cat'",$db); 
while ($res = mysql_fetch_array($q)){ 
    echo '<div class="item"><p><a href="bits.php?page=' . $res['Field2'] . '&' . $res['Field6'] . '">' . $res['Field1'] . '</a></p></div>'; 
} 
echo '</div>'; 
?> 

는 여기에는 mysql_query를 변환하는 시도에서 지금까지 내 시도 * How to prevent SQL injection in PHP?에 따라 문을 PDO합니다. 현재 페이지가 표시되지 않습니다. 모든 통찰력은 인정 될 것입니다!

+0

SQL 인젝션에 열려있는 것은 외부로부터의 변수가있는 SQL 문의 빌드입니다. ''SELECT * FROM cat WHERE cat = $ cat''은'$ cat'으로 빌드 된 실행 가능한 코드입니다. '$ cat'은 오염되어 전체 SQL 문을 오염시킵니다. –

+1

데이터를 ASSOC 배열로 가져 오기 때문에'$ result [ 'fieldname']', etc (필드 이름이 무엇이든간에)'echo $ result [2];' . – Spudley

답변

3

처음에하는 일은 나를 보호하는 것이 아닙니다.

PDO 문 (수동)에서 같아야합니다 :

$stmt = $dbh->prepare("INSERT INTO REGISTRY (name, value) VALUES (:name, :value)"); 
$stmt->bindParam(':name', $name); 
$stmt->bindParam(':value', $value); 

따라서, 귀하의 예를 들면 다음과 같습니다

$stmt = $pdo->prepare('SELECT * FROM cat WHERE cat = :cat'); 
$stmt->bindParam(':cat', $cat); 
$result = $stmt->fetch(PDO::FETCH_ASSOC); 

또는 당신이 할 수 있습니다 :

마지막으로
$stmt = $pdo->prepare("SELECT * FROM cat where cat = ?"); 
if ($stmt->execute(array($cat)) { 
    while ($row = $stmt->fetch()) { 
    //print stuff or whatever 
    } 
} 

, 마지막 부분 :

while $stmt->execute(array(':cat' => $cat)); 
echo '<div class="item"><p><a href="bits.php?page=' . $res['Field2'] . '&' . $res['Field6'] . '">' . $res['Field1'] . '</a></p></div>'; 

$ res가 설정되지 않은 것처럼 보입니다. 그것은 다음과 같아야합니다 :

while ($res = $stmt->execute(array(':cat' => $cat)) { 
    echo '<div class="item"><p><a href="bits.php?page=' . $res['Field2'] . 
     '&' . $res['Field6'] . '">' . $res['Field1'] . '</a></p></div>'; 
} 
관련 문제