2011-04-01 87 views
1

我想寫一個函數,它抓取數據庫表中的所有字段並將其放入數組中。 獲取數據庫中的字段已經是這樣的:php:(新手)將數據庫字段定義到數組中

$sq = "select column_name,data_type from information_schema.columns 
where table_name='users'"; 

我只是不知道如何將它們存儲正常。

當有例如。該數據庫結構:

fieldname type  length 
-------------------------------- 
id   int  11 
username  varchar 50 
pass   varchar 50 
lastlogin date 

什麼是存儲,以便在PHP這個數據的最佳方式查詢這樣的:

$field = myFields["username"]; 
echo $field->id."/".$field->type."/".field->length; 

,你可以看到,我想直接通過現場訪問數據名稱

+0

混淆的問題。實際上是否已經發布了*數據庫結構的列定義,即是否有四列名爲id,username,pass和lastlogin,或者是否有三列名爲users,type和length? – Nick 2011-04-01 15:00:02

回答

2

確保先連接到數據庫。然後做:

$r = mysql_query('SELECT COLUMN_NAME AS fieldname, 
          DATA_TYPE AS type, 
          CHARACTER_MAXIMUM_LENGTH AS length 
        FROM information_schema.columns 
        WHERE table_name = "users" AND column_name = "username"'); 

if ($r) 
{ 
    $field = mysql_fetch_object($r); 

    // $field->type, $field->length, etc. 
} 
+1

你的答案只會導致第一行? – Nick 2011-04-01 15:00:59

+0

我已經更新了我的問題 - 我正在談論數據庫字段和數據庫information_schema - thx – Fuxi 2011-04-01 15:02:23

+0

@Fuxi啊我看到了。我已經更新了我的答案,應該做你想要的。 :) – 2011-04-01 15:56:00

1
$sql = "YOUR QUERY HERE"; 
$res = mysql_query($sql); 

while ($rowobj = mysql_fetch_object($res)) { 
    // do what you want to do with $rowobj 
    echo $rowobj->column_name1 . "<br />\n"; 
    echo $rowobj->column_name2 . "<br />\n"; 
    // ...rest of code... 
    } 

把你的查詢到$ SQL變量和while循環利用您在查詢中選擇列替換column_nameX。

1
$query = mysql_query("SELECT * FROM table"); 

$result = array(); 
while($row = mysql_fetch_array($query)) 
{ 
    $username = $row['username']; 

    unset($row['username']); 

    $result[$username] = (object)$row; 
} 

然後,您可以通過使用訪問:

$result['username']->id 
相關問題