这里我有一个MySQL数据库,我需要检索很多行。
我需要将数据堆叠在一个数组中:
$query_sel_node = "SELECT * FROM $table_name";
$result_data = mysql_query($query_sel_node);
$data_rec = array("data" => array(), "data_h" => array(), "file" => array(), "ptr" => array(), "name" => array());
while($data_fetched = mysql_fetch_assoc($result_data))
{
array_push($data_rec["data_h"], $data_fetched['data_h']);
array_push($data_rec["data"], $data_fetched['data']);
array_push($data_rec["file"], $data_fetched['m_file_thumb']);
array_push($data_rec["ptr"], $data_fetched['m_pointer']);
array_push($data_rec["name"], $data_fetched['m_name']);
}
现在,我已经在我的表中添加了很多列,这意味着我需要为每个列创建array_push()。
有一种更简单的方法,我可以用更少的代码行来做到这一点吗?
我正在寻找的是:
我有一个带有{m_data,m_name,m_file}列的mysql表 我有几行数据
现在我需要让他们进入数组
我的数组将使用列名作为键, 然后我将我的行数据存储到每个键
答案 0 :(得分:2)
甚至比查询信息模式或使用mysql_fetch_field更好,试试这个:
$query_sel_node = "SELECT * FROM $table_name";
$result_data = mysql_query($query_sel_node);
$data_rec = array();
while($data_fetched = mysql_fetch_assoc($result_data)) {
foreach($data_fetched as $k=>$v) {
$data_rec[$k][] = $v;
}
}
答案 1 :(得分:1)
首先,从所需的表中获取所有列名称:
SELECT
COLUMN_NAME
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
table_name = '$table_name'
使用列名构建数组($table
)并为每个数组分配一个空数组(对于数据):
$columns_query = mysql_query($the_above_query);
$table = array();
while ($column = mysql_fetch_row($columns_query))
$table[$column[0]] = array();
获取每列的数据并将其插入$table
数组:
foreach (array_keys($table) as $column)
{
$query_sel_node = "SELECT $column FROM $table_name";
$result_data = mysql_query($query_sel_node);
while ($data = mysql_fetch_row($result_data))
$table[$column][] = $data[0];
}
现在,$table
将包含表$table_name
所做的确切结构和数据。