Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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 如何在MySQL查询中返回相关字段而不是引用号_Php_Mysql_Database_Database Design_Phpmyadmin - Fatal编程技术网

Php 如何在MySQL查询中返回相关字段而不是引用号

Php 如何在MySQL查询中返回相关字段而不是引用号,php,mysql,database,database-design,phpmyadmin,Php,Mysql,Database,Database Design,Phpmyadmin,我有一个用于许多表的通用MySQL语句,它只检索单个表的所有数据: $table = "profiles";//set static for example $result = mysql_query("SELECT * FROM `$table`"); 我希望结果显示位置中的文本,而不是作业id。 如果我仍然希望我的查询保持通用性,并且可能有多个字段引用了其他表,而我希望相关文本而不是id,我该如何做 mysql> show columns from profiles; +------

我有一个用于许多表的通用MySQL语句,它只检索单个表的所有数据:

$table = "profiles";//set static for example
$result = mysql_query("SELECT * FROM `$table`");
我希望结果显示
位置
中的文本,而不是
作业id
。 如果我仍然希望我的查询保持通用性,并且可能有多个字段引用了其他表,而我希望相关文本而不是id,我该如何做

mysql> show columns from profiles;
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| staff_id    | int(11)      | NO   | PRI | NULL    | auto_increment | 
| job_id      | int(11)      | NO   |     | NULL    |                | 
| name        | varchar(100) | NO   |     | NULL    |                | 
+-------------+--------------+------+-----+---------+----------------+

mysql> show columns from job_positions
+-------------+--------------+------+-----+---------+----------------+
| Field       | Type         | Null | Key | Default | Extra          |
+-------------+--------------+------+-----+---------+----------------+
| job_id      | int(11)      | NO   | PRI | NULL    | auto_increment | 
| position    | varchar(100) | NO   |     | NULL    |                |
+-------------+--------------+------+-----+---------+----------------+
是否可以在这些字段上设置某种关系,然后对查询发出命令以返回相关文本而不是id?

您可以创建一个视图:

create or replace view info as
select p.job_id as job_id, p.name as name, j.position as position
from profile as p, job_position as j where p.job_id=j.job_id
然后您仍然可以使用您的查询

$table = "info";
$result = mysql_query("SELECT * FROM `$table`");

听起来您想要一个好的PHP ORM库:这看起来很有希望,但是没有视图的表呢?是否有方法检查表上的视图,如果有,则运行查询,其中$table=$tablename。“\u view”否则$table=$tablename?通用mysql语句的要点是$table是从用户操作自动分配的,例如,他们单击“配置文件”按钮,以便将“配置文件”分配为$table。我不能将其改为“人物视图”,因为这会破坏程序中的其他内容。因此,我需要在运行SQL之前对其进行更改。因此,如果我调用我创建的视图“profile\u view”,我可以使用$table。“u view”但是,使用此通用语句的其他查询将失败,因为没有为它们创建视图,因此没有$table。”