PHP mysql。尝试使用 - > bind_param

时间:2018-03-17 22:02:10

标签: php mysql

我正在尝试对我的数据库进行搜索,在该数据库中,它会根据输入框中输入的名称的首字母的确切姓氏和名字返回结果。例如,如果用户输入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);  

2 个答案:

答案 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]%”;

作品。

希望这有助于其他人。