Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中,如何检索以值1作为列名的数据并忽略值为0的数据_Php_Mysql - Fatal编程技术网

在php中,如何检索以值1作为列名的数据并忽略值为0的数据

在php中,如何检索以值1作为列名的数据并忽略值为0的数据,php,mysql,Php,Mysql,我正在使用php和mysql进行一个新项目 插入值后,我希望将它们作为列名检索 我在用这张桌子 CREATE TABLE categories ( ID INT(8) NOT NULL AUTO INCREMENT ,action INT(1) DEFAULT '0' ,comedy INT(1) DEFAULT '0' ,drama INT(1) DEFAULT '0' ,mystery INT(1) DEFAULT '0' ) 值为0或1,我希望检索值1作为列名,就像如果a

我正在使用php和mysql进行一个新项目
插入值后,我希望将它们作为列名检索 我在用这张桌子

    CREATE TABLE categories (
ID INT(8) NOT NULL AUTO INCREMENT 
,action INT(1) DEFAULT '0'
,comedy INT(1) DEFAULT '0'
,drama INT(1) DEFAULT '0'
,mystery   INT(1) DEFAULT '0'

)
值为0或1,我希望检索值1作为列名,就像如果action and神秘有值=1一样,我希望单独显示它们
我遇到的困难是将它们显示为名称,并且只显示值1

按要求编辑一些示例数据 当我尝试获取值时,它们显示为0或1

$result = mysqli_query($link,"SELECT * FROM categories WHERE ID = $id");
  while ($row = mysqli_fetch_assoc($result)) {

echo '  
<div class="categories">

'.$row["action"].' -
'.$row["comedy"].' -
'.$row["drama"].' -
 '.$row["mystery"].' </div>'
$result=mysqli_query($link,“SELECT*FROM categories,其中ID=$ID”);
while($row=mysqli\u fetch\u assoc($result)){
回声'
“.$row[“操作”]”-
“.$row[“喜剧”]”-
“.$row[“戏剧”]”-
“.$row[“神秘”]”

我想要的是将1命名为列名

您可以迭代第一行的数组键以获取列名。但更好的选择是使用ORM方案并从中获取标题

一个解决方案(但并没有重新编译,因为您必须迭代从表中检索到的所有列),并且还显示ID列名

echo '<div class="categories">' . implode(array_keys($row), ' - ') . '</div>';
echo'。内爆(数组_键($row),'-');

第二件事是,您的数据库设计非常糟糕。我不知道确切的目的,但您应该只为类别设置两列:ID和名称。

多亏了kerbh0lz和tajniak,我找到了最佳表

创建表语句
创建表类别(categoryid int(1),category varchar(20));

插入新类型
插入到类别值中
(1,“行动”),
(2,“喜剧”),
(3,“戏剧”),

(4,“神秘”);

请提供一些示例数据和示例结果“示例数据”,如表中的当前数据。“示例结果”如“我希望结果如下…”。看起来不是最理想的数据库设计。如果要添加新类别,则需要向数据库中添加一个新列?我认为如果
categories
表有一个id和一个name列会更好。至于您的问题,请使用类似
If$row[“action”]==1的方法,然后回显“action”
等。请注意,INT声明后括号中的数字几乎没有意义,可能最好省略。我同意kerbholz的观点;这种设计似乎远远不是最优的。第二件事是第一件事,只有两列有助于搜索羽毛?我计划使用
SELECT*from按类别搜索戏剧=1的类别
编辑类型是的,您应该搜索特定类别,如从name='traic'的类别中选择*。您不需要为下一个类别创建新列。