当前位置: 首页 > 知识库问答 >
问题:

PHP MySQL不选择空格

晏华奥
2023-03-14

我当前的查询看起来像这样:

$result = mysqli_query($con,"SELECT GroupID FROM guests WHERE FirstName='$FirstName' AND LastName='$LastName'");

但是,在输入他们的名字或姓氏时,客人可能会决定在他们的名字中加一个空格(例如,安妮·玛丽或安妮·玛丽或安妮·玛丽应该是同一个人)。我想做的是能够执行上面的代码,但是where语句只能基于字母进行比较,而不考虑空格和大小写。我希望这是有意义的!

我将在表“来宾”中预先填入我的来宾姓名。我不想输入没有大写或空格的姓名,因为这些信息也将用于联系他们。

帮忙?

共有3个答案

柳宏深
2023-03-14
$sql = " SELECT GroupID ". 
"FROM guests ". 
"WHERE FirstName='".TRIM('$FirstName')."' ".
"AND LastName='".TRIM('$LastName')."'";

是最简单的方法。

如果您需要的话,还有一个选择:我尝试将名称存储为小写,然后在使用它们时强制第一个字母为大写。

$FirstName = strtolower($FirstName);
$LastName = strtolower($LastName);

使用它们时,可以使用ucfirst($str)将名称的第一个字符大写。

ucfirst($FirstName) ucfirst($LastName)
华恩
2023-03-14

使用TRIM函数删除字符串中的前导空格和尾随空格,如下所示

SELECT GroupID 
FROM guests 
WHERE TRIM(FirstName)=TRIM('$FirstName')
AND TRIM(LastName)=TRIM('$LastName')

TRIM()将帮助您去除前面或后面的空格,但根据您的帖子,如果您有类似Anne Marie的字符串,则需要使用REPLACE()函数删除字符串中出现的所有空格(正如Gordon在回答中指出的)

REPLACE(LastName, ' ','')='$LastName'
符风畔
2023-03-14

大小写由字符串的排序规则处理,但您可以重写它。

执行所需操作的where子句可以写成:

WHERE lower(replace(FirstName, ' ', '')) ='$FirstName' AND
      lower(replace(LastName, ' ', '')) = '$LastName'

这假设$FirstName$LastName是小写,没有空格。

也就是说,您应该切换到非弃用的接口,如mysqli_或PDO。而且,您应该使用参数,而不是将用户输入直接嵌入到查询字符串中(这会使您的系统容易受到SQL注入的影响)。

 类似资料:
  • 问题内容: 如何像在SQL中一样添加过滤器,以从特定列中选择非空值? 如何使用SQLAlchemy过滤器执行相同操作? 问题答案: 会产生一个约束: 在列上下文中,产生子句。如果目标是,则生成一个。 或使用(0.7.9中的新功能): 实施操作员。 通常,当与的值进行比较时,会自动生成,解析为。但是,如果与某些平台上的布尔值进行比较,则可能需要显式使用。 演示:

  • 问题内容: 在MySQL中,是否只能选择存在某些内容的列? 例如,我有以下查询: 我试图仅选择电话以813开头并且phone2中包含某些内容的行。 问题答案: 比较空字符串的值: 请注意,值解释为。

  • 问题内容: 使用Informix,我创建了一个临时表,试图从select语句中填充它。此后,我想进行更新,以在临时表中填充更多字段。 所以我正在做类似的事情; 但是您不能选择null。 例如; 可以,但是 失败! (不要让我开始为什么我不能不指定表就只做“选择当前”之类的SQL Server!) 问题答案: 此页面说您不能执行此操作的原因是因为“ NULL”没有类型。因此,解决方法是创建一个仅以所

  • 问题内容: ModelMultipleChoiceField没有选择初始选择,并且在我的示例中,我无法进行以下修复 我的模型和表格: 我的工作和结果: 我希望它可以工作的方式: 1.我的视图从request.GET获取“公司” 2.然后过滤该“公司”的所有“联系人” 3.最后,它创建一个表单并将这些“联系人”作为“初始= {…}” 两个问题: 1. [尚未回答]如何使ModelMultipleCh

  • 问题内容: 我们有一个选择器,可以在元素 完全为空 时匹配它: 但我有一个条件,其中可能为空,或者可能包含换行符或空格: 我找到了Firefox的解决方案: 其他浏览器有类似的解决方案吗? 问题答案: 很多人错过了这个问题的要点,在下面的博览会中我已经解决了这个问题,但是对于那些只想寻找答案的人,我在这里反映了最后一段: 选择器4现在重新定义 为包括仅包含空格的元素。最初是作为单独的伪类提出的,但

  • 问题内容: 我有一个很奇怪的要求,其中要求我默认在HTML的下拉菜单中没有选择任何选项。然而, 我不能用这个 因为,为此,我将必须进行验证以处理第一个选项。有人可以在没有将第一个选项作为select标签的一部分的情况下帮助我实现此目标吗? 问题答案: 也许这会有所帮助 将默认显示。但是,如果您选择一个选项,则将无法再次选择它。 您也可以通过添加一个空白来隐藏它 因此它将不再显示在列表中。 选项2