2011-02-16 27 views
3

整數輸出我有一個SQL查詢,如下所示:如何從一個SQL查詢

$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
    echo $tagID; 

我想$標籤識別包含類似3或5,或任何整數。但是,當我回應它時,輸出是:

resource id #4 

我怎樣才能使它成爲一個簡單的整數?

+0

** *確切*與任何其他類型相同的方式。 – 2011-02-16 17:39:12

+1

評論只是爲了確保你看到它,請看看MySQLi。這是一個更好的解決方案。 – Stephen 2011-02-16 17:49:22

回答

6
$result = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); // figure out why an existing tag gets the ID zero instead of 'tagID' 
$row = mysql_fetch_assoc($result); 
echo $row["tagID"]; 

mysql_query()返回結果資源,而不是查詢中的值。您必須使用fetch functions來獲取實際數據。 (查找錯誤)和$row不是false(找不到)。

+2

sql注入漏洞解決方案獲得接受和upvoted。爲什麼我不感到驚訝? – 2011-02-16 18:42:01

1

你錯過了一個單一的步驟。試試這個:

$resource = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
$tagID = mysql_fetch_assoc($resource); 

print_r($tag_id); 

如果查詢返回不止一行(即有不止一個標籤使用相同的標籤名),你會希望把它放在一個循環:

$resource = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
while($tagID = mysql_fetch_assoc($resource)) { 
    echo $tagID['tagID']; 
} 

附錄

雖然上面的代碼可以解決您的問題,但我強烈建議您在此停下來,然後瞭解mysqli。這是一個比使用mysql_*功能更新,更強大的解決方案。從文檔:

mysqli擴展,或者正如有時被稱爲MySQL改進的擴展,是爲了利用MySQL系統版本4.1.3和更新版本中的新特性而開發的。 PHP版本5及更高版本包含mysqli擴展。

mysqli擴展具有許多優點,在MySQL擴展是關鍵的增強功能:

  1. 面向對象的接口
  2. 支持預處理語句
  3. 支持多個語句
  4. 支持用於交易
  5. 增強的調試功能
  6. 嵌入式服務器支持
從文檔

另外:

如果你正在使用MySQL版本4.1.3或更高版本是強烈建議您使用[和mysqli]擴展。

0

SQL查詢總是返回一個SQL資源結果,這是一個可疑的不可讀的對象,其中包含查詢結果。由於存儲數據庫的方式,用戶可能希望操作數據的方式以及數據量巨大,因此將其存儲爲標識符而不是對象更容易。

來獲取數據,你需要,你必須先將其轉換爲一個數組:

$result = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
$row = mysql_fetch_assoc($result); 
echo $row["tagID"]; 

(其中$行[專欄]是你想從(

提取數據的列或對象:

$result = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
$object = mysql_fetch_object($result); 
echo $object->tagID; 

(其中$對象 - >列是你想從其中提取數據的列)

^h這有助於。

1

mysql_query函數本身在成功時返回'resource',在錯誤時返回false。在這種情況下,您將獲得id爲#44的資源,這是您可能期望從該函數獲得的資源。

你可以做的是取出mysql_query的結果並使用mysql_fetch_assoc將資源轉換爲關聯數組。 (也可以查看mysql_fetch_row或者其他技術的mysql_fetch_field)。以下是構建此問題的典型方法:

$query = "SELECT tagID FROM tags WHERE tagName = '$tag'"; 
$result = mysql_query($query); 
$array = mysql_fetch_assoc($result); 

$tagID = $array['tagID']; //your integer. 

有關詳細信息,請參閱the mysql_query PHP Manual entry。查看底部的用戶註釋以獲得特別好的建議和示例代碼。

3

看到沒有一個程序員在答案中總是令人震驚。
我知道OP也不是程序員,所以,我的回答完全是徒勞,但是到底是什麼。

這裏是被稱爲函數的事情例如:

<? 
function dbgetvar(){ 
    $args = func_get_args(); 
    $query = array_shift($args); 
    foreach ($args as $key => $val) { 
    $args[$key] = "'".mysql_real_escape_string($val)."'"; 
    } 
    $query = vsprintf($query, $args); 

    $res = mysql_query($query); 
    if (!$res) { 
    trigger_error("dbgetarr: ".mysql_error()." in ".$query); 
    return FALSE; 
    } else { 
    $row = mysql_fetch_row($res); 
    if (!$row) return NULL; 
    return $row[0]; 
    } 
} 

這段代碼可以被保存在一些配置文件,然後叫以這種方式:

$tagID = dbgetvar("SELECT tagID FROM tags WHERE tagName = %s",$tag); 
echo $tagID;