2014-11-05 2 views
0

PDO를 사용하여 SQL 데이터베이스를 쿼리하려고합니다. 내 쿼리에는 따옴표가있는 경우가 있습니다.따옴표가있는 SQL 쿼리가 결과를 반환하지 않습니다.

function getPageByPagid($pagid) { 
    $db = dbConnection(); 

    $sql = "SELECT * FROM pages WHERE pagid='".$pagid."'"; 
    $q = $db->prepare($sql); 
    $q->setFetchMode(PDO::FETCH_ASSOC); 
    $q->execute(); 
    $results = $q->fetch(); 

    return $results; 
} 

저는 $ pagid에 따옴표가 있으면 여전히 작동해야하는 기능을 사용하여 SQL을 준비합니다. 이제 따옴표가 없을 때 작동하지만 따옴표가있을 때는 여전히 작동하지 않습니다. 왜이 기능이 작동하지 않습니까?

피씨 : 인용문이 이스케이프 처리되지 않았거나 내 데이터베이스에있는 항목이 아닙니다.

답변

2

는 필드의 정수 유형이 원인 문자열 자리 표시 자 (PDO 기준)

function getPageByPagid($pagid) { 
    $db = dbConnection(); 
    $sql = "SELECT * FROM pages WHERE pagid= :pagid"; 
    $q = $db->prepare($sql); 
    $q->bindParam(':pagid', $pagid); 
    $q->setFetchMode(PDO::FETCH_ASSOC); 
    $q->execute(); 
    $results = $q->fetch(); 
    return $results; 
} 
+0

감사를 사용하는

$sql = "SELECT * FROM pages WHERE pagid='$pagid'"; 

이상으로 시도 전송하실 수 있습니다! 이것은 실제로 작동하는 것 같습니다. – aardnoot

+0

전자는 질문의 쿼리와 정확하게 동일해야하지만 후자는 작동해야합니다. –

+0

@FrankKluyt 도움이되는 대답을 수락 할 수 있습니다 –

관련 문제