2012-07-04 63 views
2

我試圖很好地解析出我的if-else語句,但似乎沒有解析出else語句。int轉換爲字符串的PHP

$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

$ result是一個對象而不是一個字符串,如果你想獲取一行並檢查它,你需要調用一個結果方法。 – SpacedMonkey

回答

2

$result是一個對象,而不是一個整數。您需要調用一個獲取方法,例如fetchAll,或者甚至更簡單,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'爲例。 –