【问题标题】:searching on multiple values in php在php中搜索多个值
【发布时间】:2014-03-05 08:56:18
【问题描述】:

我有一个表单,其中有三个文本字段,用户在其中一个或所有字段中输入电子邮件,我需要检查该电子邮件是否存在于数据库中。 问题是可能是用户只填写了 1 个字段,可能是我从 DB 中得到了多个结果,我在 php 中编写的查询是

$sql = "SELECT * FROM user_email WHERE (emailAddr = '{$d1]}' OR emailAddr = '{$d2}' OR emailAddr = '{$d3}') AND email!='' LIMIT 1";

考虑不同的用例,其中可能有空字段,没有写任何东西,我做得对吗?

【问题讨论】:

  • LIMIT 1 将确保您获得最多 1 行

标签: php mysql search select resultset


【解决方案1】:

我完全忽略了您如何使用带括号的语法,但它可能是这样的:

SELECT
  * 
FROM 
  user_email 
WHERE 
  email 
IN 
  ('$d1','$d2','$d3') 
LIMIT 
  1

也就是说,如果有一封电子邮件等于这三个之一,则返回该行。

【讨论】:

  • 如果用户什么都不填,并且 user_email 表中有一个不应该返回的空白行怎么办
  • @user1765876 然后在运行查询之前使用FILTER_VALIDATE_EMAIL 验证电子邮件!
  • 或添加 " 并且 email 不为 null 并且 email !=' ' "
  • @user1765876 或使用 SQL 查询,我认为是这样的,例如:SELECT * FROM user_email WHERE email LIKE '%_@__%.__% AND IN ('$d1','$d2','$d3')(未测试但应该可以)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-12-05
  • 1970-01-01
  • 2011-05-20
  • 2017-07-23
  • 2010-11-15
  • 2019-09-17
相关资源
最近更新 更多