【问题标题】:Show full name from two columns in mysql table显示 mysql 表中两列的全名
【发布时间】:2014-06-21 23:52:54
【问题描述】:

我正在从 mysql 表的两列中选择一个全名,但输入只需要一个顺序即可返回信息。

firstname | lastname
  Amaj     |  Ato

有了这些数据,我想在用户输入 Amaj Ato 时从一个文本框中选择全名(Amaj Ato 或 Ato Amaj),反之亦然(Ato Amaj)。 这是我迄今为止尝试过的

`SELECT * FROM `table_name` WHERE concat_ws(' ', 'firstname', 'lastname') like '%$fullname%'; `

这只能以一个顺序选择名字和姓氏。例如,如果用户输入 Amaj Ato,查询会给出全名,但当用户在姓后输入名字(如 Ato Amaj)时,查询返回空。我希望用户以他输入名称的任何顺序获取全名。感谢您的帮助。

【问题讨论】:

  • 您应该注意 SQL 注入并尝试清理您的输入,尤其是来自最终用户的输入
  • 是的。我不会忘记的。谢谢

标签: php mysql


【解决方案1】:

您需要“告诉”查询您要查找的内容,它不会神奇地知道可以切换名称。为此,您只需添加一个 OR 指定另一个有效大小写:

SELECT * FROM `table_name`
WHERE concat_ws(' ', 'firstname', 'lastname') like '%$fullname%'
    OR concat_ws(' ', 'lastname', 'firstname') like '%$fullname%'

【讨论】:

  • 三个名字的顺序好像不行,比如Koffie Adom和Mathew,分别是名字和姓氏。当名字顺序改变时,返回空。
  • @George 正如我所说,您需要明确告诉查询您想要什么。您可以将concat_ws() 用于返回的行并查看它的实际外观,然后可能再次更改顺序并添加另一个OR,等等。
  • 我的意思是,名字包含一个值说(Koffie Adom),当用户输入Koffie Adom时,该行完美地返回名字值(Koffie Adom),但是当用户输入Adom Koffie时查询返回空。这次我只讨论名字。
猜你喜欢
  • 2016-11-02
  • 2014-12-16
  • 2016-07-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-05-05
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多