整數輸出我有一個SQL查詢,如下所示:如何從一個SQL查詢
$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'");
echo $tagID;
我想$標籤識別包含類似3或5,或任何整數。但是,當我回應它時,輸出是:
resource id #4
我怎樣才能使它成爲一個簡單的整數?
整數輸出我有一個SQL查詢,如下所示:如何從一個SQL查詢
$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'");
echo $tagID;
我想$標籤識別包含類似3或5,或任何整數。但是,當我回應它時,輸出是:
resource id #4
我怎樣才能使它成爲一個簡單的整數?
$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
(找不到)。
sql注入漏洞解決方案獲得接受和upvoted。爲什麼我不感到驚訝? – 2011-02-16 18:42:01
你錯過了一個單一的步驟。試試這個:
$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擴展是關鍵的增強功能:
- 面向對象的接口
- 支持預處理語句
- 支持多個語句
- 支持用於交易
- 增強的調試功能
- 嵌入式服務器支持
另外:
如果你正在使用MySQL版本4.1.3或更高版本是強烈建議您使用[和mysqli]擴展。
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這有助於。
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。查看底部的用戶註釋以獲得特別好的建議和示例代碼。
看到沒有一個程序員在答案中總是令人震驚。
我知道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;
** *確切*與任何其他類型相同的方式。 – 2011-02-16 17:39:12
評論只是爲了確保你看到它,請看看MySQLi。這是一個更好的解決方案。 – Stephen 2011-02-16 17:49:22