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, 
                                         FirstName, 
                                         LastName 
                                  FROM   stafftest 
                                  WHERE  FirstName LIKE ? 
                                  OR     LastName LIKE ?\');
$search = $letter . \'%\';
$query->bind_param(\'s\', $search);
$query->execute();
注意:您需要使用通配符字符串构造一个PHP变量,并绑定该变量,而不是在查询中将通配符放在占位符周围。
这将搜索其名字或姓氏以ѭ3开头的
\"SELECT ID, FirstName, LastName FROM stafftest 
 WHERE FirstName REGEXP \'^\".$letter.\"\' OR 
       LastName REGEXP \'^\".$letter.\"\'\";
正则表达式 在MySQL中进行模式匹配 快乐2帮助:)

要回复问题请先登录注册