鉴于某些列的表和名称,我有以下信息架构选择查询。
SELECT `COLUMN_NAME`
FROM `INFORMATION_SCHEMA`.`COLUMNS`
WHERE `TABLE_SCHEMA` = 'm_college'
AND `TABLE_NAME` = 'm_fee'
AND COLUMN_NAME NOT IN ('id', 'classid', 'semid')
但是这个选择并没有给出我选择的每个未知列的行值。我得到的只是未知列的名称。是否可以选择行的值,以便我可以在我的PHP脚本中将列作为键和行作为值对?我需要在其他表中插入列名和行值。请帮忙或建议。
答案 0 :(得分:1)
SELECT * FROM table_name
从table_name
中选择所有列及其值。您使用的是从架构表中选择所有列名称(不包含table_name
中的信息)。
您可以在PHP中使用SELECT * FROM table_name
,只需使用mysqli_fetch_assoc
来获取一个关联数组,该数组基本上是key => value
数组,其中key
是列名和{ {1}}是数组中给定行中该列的值。
从PHP文档(http://php.net/manual/en/mysqli-result.fetch-assoc.php)中拉出目录,因为你想要一个例子:
value
答案 1 :(得分:1)
以下是显示交叉表的非常快速的尝试。
这使您可以拥有固定的结构并即时添加费用类型。
CREATE TABLE IF NOT EXISTS `mz_fee222` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`classid` int(11) NOT NULL,
`semid` int(11) NOT NULL,
`batch` year(4) NOT NULL,
`session` int(11) NOT NULL
);
create table fee_type
( fee_id int auto_increment primary key,
description varchar(100)
);
insert fee_type (description) values ('exam'),('marksheet'),('admitcard'),('centre'),('practical'); -- etc as you go
create table mz_fee_intersect
( -- here is where the fee amount is stored. Flexible.
id int auto_increment primary key,
mz_id int not null, -- this is the id from my_fee222 table
fee_id int not null, -- this is the fee_id from fee_type table
fee int not null, -- here is the actual fee, like 100 bucks
-- FK's below (not shown):
--
unique key (mz_id,fee_id) -- forbids duplicates
);
答案 2 :(得分:0)
好的,我想不出为什么你有一个表,除了显而易见的动态添加列,但这里有一个建议,我希望有帮助
如果您运行DESCRIBE tablename
并收集结果,则会得到类似的结果集。
Field Type Null Key Default Extra
id int(10) unsigned NO PRI NULL auto_increment
parent_id int(11) NO MUL 0
lft int(11) NO MUL 0
rgt int(11) NO 0
level int(10) unsigned NO NULL
name varchar(50) NO UNI NULL
title varchar(100) NO NULL
rules varchar(5120) NO NULL
如果将其加载到数组中,然后删除您不想在后面的查询中选择的行,则可以获得它们的列名(在“字段”列中),甚至是它们的数据类型(如果需要)。
然后,您可以使用此数组为列特定查询构建字段列表,并且在处理任何结果时也知道要调用它们的内容。
我希望这会有所帮助。