2012-07-04 3 views
2

if 문을 구문 분석하려고하는데, else 문을 구문 분석하지 않는 것 같습니다.PHP가 int를 문자열로 변환하는 중

$a = 1 
if (is_numeric($a)) 
{ 
    $DB = new PDO('sqlite:database.db'); 
    $result = $DB->query('select id from staff where id='.$a); 
     if ($result == "") 
     { 
     echo "'{$a}' is invalid. No such record", PHP_EOL; 
     } 
     else 
     { 
      echo "'{$a}' is found", PHP_EOL; 
     } 

} 
else 
{ 
    echo "'{$a}' is NOT numeric", PHP_EOL; 
} 

내가 내가 $ 밖으로 결과 에코 말할 때와 같이 정수로 반환 생각 내 $ 결과, 그것은 PDO 문을 INT로 변환 할 수 없습니다 말했다. 내 첫 번째 다른 성명서로 이동하지 않습니다. 제 실수를 어떻게했는지 알려주세요.

감사

+0

당신이 위해서 var_dump ($ 결과)를 만들 수 있습니다; if-else 전에? – ivoba

+0

$ 결과는 문자열이 아닌 객체입니다. 행을 가져 와서 확인하려면 결과의 메서드를 호출해야합니다. – SpacedMonkey

답변

2

귀하의 $result는 객체가 아닌 정수입니다. fetchAll과 같은 fetch 메소드를 호출하거나 데이터를 다른 변수에 넣으려면 더 단순한 fetch을 호출해야합니다. 여기

$a = 1 
if (is_numeric($a)) 
{ 
    $DB = new PDO('sqlite:database.db'); 
    $result = $DB->query('select id from staff where id='.$a); 
     if ($result) 
     { 
      $data = $result->fetchAll(PDO::FETCH_NUM); 
      if (!isset($data[0])) 
       echo "'{$a}' is invalid. No such record", PHP_EOL; 
      else 
       echo "'{$a}' is found", PHP_EOL; 
     }  
} 
else 
{ 
    echo "'{$a}' is NOT numeric", PHP_EOL; 
} 

fetch 또 다른 예입니다 :

으로 시도

$a = 1 
if (is_numeric($a)) 
{ 
    $DB = new PDO('sqlite:database.db'); 
    $result = $DB->query('select id from staff where id='.$a); 
     if ($result) 
     { 
      $data = $result->fetch(PDO::FETCH_ASSOC); 
      if (!$data) 
       echo "'{$a}' is invalid. No such record", PHP_EOL; 
      else 
       echo "'{$a}' is found", PHP_EOL; 
     }  
} 
else 
{ 
    echo "'{$a}' is NOT numeric", PHP_EOL; 
} 
+0

코드가 작동 중입니다! 하지만 모든 기록을 가져오고 싶지는 않을 것입니다. 데이터베이스에 실제로 일치하는 특정 레코드 만 필요합니다. 하나 가져올 생각이야? – JLearner

+0

'fetch'를 사용할 수도 있습니다. php의 매뉴얼 페이지를 보시오. http://php.net/manual/en/pdostatement.fetch.php –

+0

필자가 대답을 업데이트하여 'fetch'로 예제를 만들었습니다. –

관련 문제