Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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-SQL连接查询_Php_Mysql - Fatal编程技术网

PHP-SQL连接查询

PHP-SQL连接查询,php,mysql,Php,Mysql,我有一个MySQL结构: CREATE TABLE Fields ( ID INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY, ForUser VARCHAR(255) NOT NULL, ForCategory VARCHAR(100) NOT NULL, FieldName VARCHAR(100) NOT NULL ); CREATE TABLE Content ( ID INT(10) UNSIGNED AUTO_INCREMENT PRIMARY

我有一个MySQL结构:

CREATE TABLE Fields (
ID INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ForUser VARCHAR(255) NOT NULL,
ForCategory VARCHAR(100) NOT NULL,
FieldName VARCHAR(100) NOT NULL
);
CREATE TABLE Content (
ID INT(10) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
ForUser VARCHAR(255) NOT NULL,
ForCategory VARCHAR(100) NOT NULL,
ForField VARCHAR(100) NOT NULL,
FieldContent VARCHAR(255) NOT NULL
);
现在,我想进行SQL查询,以在HTML表中列出结果。作为表头,我想从字段中列出FieldName,作为表体,我想从内容中列出FieldContent。在WHERE子句中,也必须是ForUser和ForCategory。。。列出每个字段的内容。我尝试过SQL Join,但我花了3个小时都没有成功。请给我写一个如何显示这个的例子

表联接查询:

选择
a、 身份证,
a、 对于用户,
b、 对于用户,
a、 对于类别,
b、 对于类别,
a、 字段名,
b、 福菲尔德,
b、 字段内容
从…起
字段a,
内容b
哪里
a、 ForUser=“”和b.ForCategory=“”

如果我正确理解此请求(您对细节有点了解),您将需要使用一些组件来实现您的目标:

两个sql查询(一个用于表头,一个用于表体) 使用php或其他脚本语言将结果显示为html

您的第一个查询将返回按用户和类别筛选的字段名称:

select ID, FieldName from Fields where ForUser = 'some_user' and ForCategory = 'some_category' order by ID;
在php或其他代码中,需要迭代结果并显示包装在html标记中的每个结果,例如:

echo '<table><tr>';

$fields = @ mysql_query ("select ID, FieldName from Fields where ForUser = 'some_user' and ForCategory = 'some_category' order by ID;", $connection);

while ($fields_result = mysql_fetch_assoc($fields)) {
        echo '<th>' . $fields_result['FieldName'] . '</th>;
        }

echo '</tr>';
以类似的方式,在php中迭代结果以构建表中的内容行

注意,我在字段表中对PK进行排序,以确保内容以与字段相同的顺序返回。这种方法可能不够,如果需要特定的字段顺序,可能需要添加“序列”字段


还请注意我之前的评论,即修改数据库结构会很好。您不需要重复内容表中的所有字段,只需添加一个引用字段记录ID的外键

,然后再发布浪费了三个小时的代码。我再也不知道了。。。我在谷歌上搜索了一下,但没有找到我的问题的答案。首先,我会认真地质疑你的数据结构。为什么不在内容表中使用Fields.ID作为外键,而不是在内容表中重复FieldName、ForUser和ForCategory(我假设您正在这样做)。如果你能在sqlfiddle中提供一些示例数据,这会有所帮助。我插入了该查询,当我获取_assoc时,我获取了文件名,并没有结束地重复,我只获取了用于测试的字段名。谢谢!它现在列出了FieldName属性,但我现在有另一个问题:如何将此数据属性放入HTML表中。我知道如何列出表头,但我不知道如何使用FieldContent数据列出Table Boody。请帮帮我。再次感谢!您在此处发布的联接查询还有另一个问题。当我获取$row[“FieldContent”];我得到了“Nema”作为结果,但在数据库中“Nema”在任何地方都不存在。“Nema”结果的数量与列出的FieldNameSecond SQL不工作属性的数量相同。当我运行第二个SQL时,它只返回FieldContent中所有数据的一部分。
select 
   FieldContent 
from 
   Content c join 

   Fields f on 
    c.ForField = f.FieldName and
    c.ForUser = f.ForUser and
    c.ForCategory = f.For Category
where
    f.ForUser = 'some_user' and 
    f.ForCategory = 'some_category' 

order by ID;