2013-04-02 25 views
0

我想使用mysql_fetch_row從數據庫中獲取單個行,但是當我回顯它時,將列放置爲行,例如$ row_columns [0]是列1和$ row_columns [1]是第2列,允許我向您展示我正在使用的代碼。mysql_fetch_row獲取列而不是行

mysql_select_db($database_Takeaway, $Takeaway); 
    $query_columns = "SELECT * FROM `rest_site` WHERE linkid = '$rest_id'"; 
    $columns = mysql_query($query_columns, $Takeaway) or die(mysql_error()); 
    $row_columns = mysql_fetch_row($columns); 

並顯示它。

echo($row_columns[0]) 

我試圖

的print_r($ row_columns)

並且那反饋以下

陣列([0] => 1001 [1] = > [2] => [3] => 0 [4] => [5] => 1837 [6] =>測試標題[7] =>測試文本[8] => [9] => [10 ] =>)

以上是全部1行數據,而我需要它是單個列,因此我可以執行類似以下操作的操作。

echo $row_columns[0]['name'] 
echo $row_columns[0]['postcode'] 

我一直在做這個搜索的很多,似乎無法找到任何幫助,我已經檢查php.net以及一般的谷歌搜索和當然堆棧溢出,從而會很感激你幫助這一點。

我希望我已經明確了這個問題。

感謝

+3

這就是它應該做的事情,它返回查詢中的下一行。沒有mysql函數一次返回所有行,你必須在循環中調用mysql_fetch_XXX函數之一。 – Barmar

回答

1

您應該使用mysql_fetch_assoc()獲得與列名的結果。

此外,如果你不把它放到循環中,你將只會收到第一行查詢。更好的用法是:

mysql_select_db($database_Takeaway, $Takeaway); 
$query_columns = "SELECT * FROM `rest_site` WHERE linkid = '$rest_id'"; 
$columns = mysql_query($query_columns, $Takeaway) or die(mysql_error()); 
while ($row_columns = mysql_fetch_assoc($columns)) { 
    echo $row_columns["name"]; 
    echo $row_columns["postcode"]; 
} 
-1

SELECT *沒有適當的語句,你最好列表,你需要的所有列。使他們明確也有助於我們回答你的問題。

此外,請始終輸入查詢! mysql_real_escape_string()

作爲一個猜測,我認爲你錯過了一個事實,即獲取查詢結果總是必須逐行讀取。你知道你需要一個循環嗎?

另外,如果您想要列名稱,請使用mysql_fetch_assoc()

+0

SELECT *是有效的SQL。 –

+0

是的,但我會批評說「*」幾乎總是對性能不利,像這個例子所證明的那樣,模糊了實際處理數據的願景。 'SELECT *'在查詢的第一個草稿中可以正常工作,但如果它未更改爲顯式列,則此表中的任何新列將自動被此查詢拉取。試想一下,用戶表開始變小,然後爲用戶頭像添加一列,從而允許每個用戶1 MB,並且該查詢永遠不會處理圖像。再見,表現。 – Sven

0

mysql_fetch_row只是一個枚舉數組。

您在尋找mysql_fetch_array,從而得到一個關聯和枚舉數組,因此您可以使用字符串文字數組索引。

您還應該查看mysqli或PDO,因爲從PHP 5.5開始不推薦使用mysql。

鏈接:mysql_fetch_array Documentation