Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/278.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.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 通过用户名而不是id建立关系_Php_Mysql - Fatal编程技术网

Php 通过用户名而不是id建立关系

Php 通过用户名而不是id建立关系,php,mysql,Php,Mysql,假设我有一个用户表,然后是一个用户配置文件表。要连接该关系,在user\u profile表中会有一个user\u id行。现在,当我构建应用程序时,我喜欢让我的url显示用户名而不是用户id示例: http://www.example.com/username/profile 不是: 因此,我发现自己所做的是通过用户名获取用户id,然后获取配置文件信息,这只是无缘无故地添加了一个额外的查询。我的问题是,我可以通过用户名建立关系吗?用户名与users表中的id行一样唯一。或者这是一种不好的做法

假设我有一个用户表,然后是一个用户配置文件表。要连接该关系,在user\u profile表中会有一个user\u id行。现在,当我构建应用程序时,我喜欢让我的url显示用户名而不是用户id示例:

http://www.example.com/username/profile
不是:


因此,我发现自己所做的是通过用户名获取用户id,然后获取配置文件信息,这只是无缘无故地添加了一个额外的查询。我的问题是,我可以通过用户名建立关系吗?用户名与users表中的id行一样唯一。或者这是一种不好的做法,我应该坚持使用user\u id?

更好的方法是使用
user\u id
加入表,但提供用户名作为参数。比如:

select p.*
  from users u
     , profiles p
 where u.id = p.user_id
   and u.username = ?

您是如何构建此应用程序的?在URL中使用用户名并没有什么“不好”。通常这只是通过路由正确解码URL参数的问题。如果您的用户名是唯一的,您可以直接按名称获取用户,而不需要ID。虽然您手头有ID,但使用varchar加入确实是一种不好的做法。检索用户id的额外查询可以忽略不计。
select p.*
  from users u
     , profiles p
 where u.id = p.user_id
   and u.username = ?