我正在尝试对我的数据库进行搜索,在该数据库中,它会根据输入框中输入的名称的首字母的确切姓氏和名字返回结果。例如,如果用户输入Simon Burns
,则会返回所有用户的首字母S
和姓氏Burns
。这是我的代码。
很抱歉,如果之前已经介绍过,但我找不到一个有效的简单答案。
$firstname = filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING);
$surname = filter_input(INPUT_POST, 'surname', FILTER_SANITIZE_STRING);
$prep_query = "SELECT id, firstname, surname, profilepic, Gender, StartYear, EndYear, CircaStart, CircaEnd, JnrHouse, SnrHouse
FROM people WHERE firstname LIKE ? AND surname = ?";
$namecheckresult = $connection->prepare($prep_query);
// Return all matches wether registered on not
if ($namecheckresult)
{
$initial = $firstname[0];
$namecheckresult->bind_param( 'ss', $initial . '%', $surname);
$namecheckresult->execute();
$namecheckresult->store_result();
$namecheckresult->bind_result($id, $first, $last, $ProfilePic, $Gender, $StartYear, $EndYear, $CircaStart, $CircaEnd, $JnrHouse, $SnrHouse);
答案 0 :(得分:-1)
您混淆了2个参数
将其更改为
$p1 = '%'.$initial;
$namecheckresult->bind_param( 'ss', $p1 , $surname);
或者您可能希望将%
放在$initial
的正面和背面
$p1 = "%$initial%";
$namecheckresult->bind_param( 'ss', $p1 , $surname);
答案 1 :(得分:-2)
我现在已经找到了答案。
更改$ initial = $ firstname [0];
到
$ initial =“%$ firstname [0]%”;
作品。
希望这有助于其他人。