2014-02-21 4 views
0

쿼리 결과를 찾는 의도 한대로PHP의 PDO와 MySQL은 편지에 phpMyAdmin에서

SELECT id 
FROM `column` 
WHERE `id` = "RM3zc7e8" 
LIMIT 1 

작품으로 ID를 선택할 수 없습니다. 그러나 함수에서 PDO를 사용할 때

function checkID($sid) { 
    try { 
    $conn = new PDO('mysql:host=' . HOST . ';dbname=' . DATABASE, USER, PASSWORD); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

    $stmt = $conn->prepare("SELECT id FROM column WHERE id = :sID"); 
    $stmt->execute(array('sID' => $sID)); 
    $result = $stmt->fetch(); 

    } catch(PDOException $e) { 
    echo 'ERROR: ' . $e->getMessage(); 
    } 

    return $result; 
} 

나는 아무것도 반환하지 않습니다. 이견있는 사람?

+0

후손을 위해 : 나는'execute'가':'가 필요하고, OP를 돕는 것처럼 보였다고 대답했지만 @yourcommonsense는 그렇게 할 수 없다고 언급했다. http://stackoverflow.com/questions/9778887/is-the-leading-colon-for-parameter-names-passed-to-pdostatementbindparam-opt를 참조하십시오. – Nanne

답변

-1

PHP의 PDO와 MySQL은 문자 실제로 그들이 할 수있는

와 ID를 선택할 수 없습니다.
코드가 괜찮습니다.
귀하의 질문은 오타 또는 실수로 인한 실제 질문이 아닙니다. 아마 처음으로 테스트 할 때까지 데이터가 없었을 것입니다.
PDO가 두 가지 방식으로 작동하므로 다른 대답은 잘못되었습니다. 그것을 확인하고 참조하십시오.

사실, PDO가 해당 이름의 자리 표시자를 찾을 수 없으면 오류가 발생합니다.

+0

YCS가 맞습니다. 죄송합니다. 나는 이것과 새로운 대답을 만났을 것이라고 확신했지만, 틀렸어, 나쁘다. – Nanne

3

변수 이름이 잘못되어 작동하지 않습니다. 함수에서 $sID 따라서 값이 명세서에 바인딩하지라는 이름의 변수가 없습니다 다음

function checkID($sid) { 
       ^

$stmt->execute(array('sID' => $sID)); 
          ^

대 비교. 그것을 $sid으로 만드십시오.