php :(新手)数据库字段定义成数组

时间:2011-04-01 14:54:37

标签: php arrays database-schema

我想编写一个函数,它从数据库表中获取所有字段并将其放入数组中。 获取数据库字段的方式如下:

$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;

正如您所见,我想通过字段名称

直接访问数据

3 个答案:

答案 0 :(得分: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 :(得分: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替换为您使用查询选择的列。

答案 2 :(得分: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