如何解决php mysql通过第一个首字母搜索
| 我在mysql数据库中有一个成员目录。我希望用户能够通过名字或名字的名字首字母进行搜索。我目前有一些代码,允许按首字母搜索,但显示带有字母的任何名称,无论它是否是第一个字母。我如何将其设置为仅在凋谢名称的首字母与所选字母匹配时返回?$sql=\"SELECT ID,FirstName,LastName FROM stafftest WHERE FirstName LIKE \'%\" . $letter . \"%\' OR LastName LIKE \'%\" . $letter .\"%\'\";
解决方法
$letter = mysql_real_escape_string($letter);
$sql = \"SELECT ID,FirstName,LastName FROM stafftest WHERE FirstName LIKE \'\" . $letter . \"%\'
OR LastName LIKE \'\" . $letter .\"%\'\";
我所做的就是删除前一个%符号。百分号告诉mysql like语句匹配任何字符。因此,实际上,您告诉它:\'匹配任何字符(包括开始和结束字符),然后找到字母L,然后匹配任何字符。\'。将其更改为最后只使用1%即可解决您的问题。
此外,如果可以的话,最好使用准备好的语句。 PDO对此非常方便。,如其他人所提到的,您可以通过通配字符串的结尾来完成此操作。为了避免潜在的SQL注入,请在绑定变量中使用它。
/* $db_connection is assumed to be a mysqli connection resource */
$query = $db_connection->prepare(\'SELECT ID,LastName
FROM stafftest
WHERE FirstName LIKE ?
OR LastName LIKE ?\');
$search = $letter . \'%\';
$query->bind_param(\'s\',$search);
$query->execute();
注意:您需要使用通配符字符串构造一个PHP变量,并绑定该变量,而不是在查询中将通配符放在占位符周围。,这将搜索其名字或姓氏以ѭ3开头的
\"SELECT ID,LastName FROM stafftest
WHERE FirstName REGEXP \'^\".$letter.\"\' OR
LastName REGEXP \'^\".$letter.\"\'\";
正则表达式
在MySQL中进行模式匹配
快乐2帮助:)版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。