2011-07-13 53 views
2

我有一個PHP腳本有這樣的說法:PHP/MySQL查詢返回的參考ID,而不是INT值

$query = "SELECT type 
      FROM users 
      WHERE username = '$username'"; 

$result = $database->query($query); 
if($result == 1) { 
    echo "whatever"; 
    continue; 
} 

的問題是,如果在運行從來沒有,當我創建了一個print語句打印$結果在if運行之前,它打印一個Reference ID#。所以結果永遠不會是== 1,因爲它被分配參考ID#。

我做錯了什麼?我如何分配INT類型的'type'值,而不是其內容ID#?

+0

什麼是$數據庫是你自己的自定義對象,一個'mysqli'連接,還有其他的東西? –

+0

$ database是一個對象,用於打開與數據庫的連接 – Jmichelsen

+0

謝謝大家的快速幫助! – Jmichelsen

回答

7

你必須獲取該行第一...

$query = "SELECT type FROM users WHERE username = '$username'"; 
$result = $database->query($query); 
$row = mysql_fetch_assoc($result); 
if($row['type'] == 1) 
{ 
     echo "whatever"; 
} 
+0

我試過這個,並得到一個錯誤,指出:PHP致命錯誤:不能打破/繼續1級 – Jmichelsen

+1

這不是我的錯,我以爲你得到它或類似的東西。回答編輯;) – genesis

+0

呵呵並不意味着指責,我認爲繼續應該在那裏。我試試這個,謝謝。 – Jmichelsen

2

嘗試

<?php 
$result = mysql_fetch_assoc($database->query($query)); 
$id = $result['type']; 
if($type == 1) 
{ 
3

您需要使用mysql_fetch_assoc()或mysql_fetch_array()來獲得結果到一個數組:

$query = $database->query("SELECT type FROM users WHERE username = '$username'"); 
$result = mysql_fetch_assoc($query); 

if($result['type'] == 1) 
{ 
    echo "whatever"; 
    continue; 
} 
0

是的。你必須檢查它像:

$query = "SELECT type FROM users WHERE username = '$username'"; 
$result = $database->query($query); 
if($result) 
{ 
    echo "whatever"; 
    continue; 
} 

這是一個布爾檢查,但...在PHP中,我們有微弱的類型 - 一切都是真的,除了在,,「」(空字符串),空等

如果你想成爲一個好布爾檢查,包括類型,那麼你必須:

if(bool_val === true) 
{ 
.. 
} 
// or 
if(bool_val && is_bool(bool_val)) 
{ 
.. 
} 

此查詢對象返回一個結果資源在PHP中。你可能會收到#Resource ID,這是一些在PHP代碼中的指針。

如果您收到類似這樣的內容(#Resource ID) - 這意味着您的查詢已正確傳遞並且沒有發生錯誤。

相關問題