Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP-mysql。尝试使用->;检索类似查询;绑定参数_Php_Mysql - Fatal编程技术网

PHP-mysql。尝试使用->;检索类似查询;绑定参数

PHP-mysql。尝试使用->;检索类似查询;绑定参数,php,mysql,Php,Mysql,我正在尝试在我的数据库中进行搜索,它返回基于确切姓氏和名字的结果,并在输入框中输入姓名的首字母。例如,如果用户输入Simon Burns,它将返回所有用户,名字的首字母为S,姓氏的首字母为Burns。这是我的密码 很抱歉,如果这已经涵盖之前,但我找不到一个简单的答案,工程 $firstname = filter_input(INPUT_POST, 'firstname', FILTER_SANITIZE_STRING); $surname = filter_input(INPUT_POST, '

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

你把两个参数弄混了

换成

$p1 = '%'.$initial;
$namecheckresult->bind_param( 'ss',  $p1 , $surname);
或者,您可以像这样将
%
放在
$initial
的前面和后面

$p1 = "%$initial%";
$namecheckresult->bind_param( 'ss',  $p1 , $surname);

我现在已经找到了答案

更改$initial=$firstname[0]

$initial=“%$firstname[0]”

工作


希望这对其他人有所帮助。

Erm,是否返回了来自PHP或MySQL的任何错误代码?(!)致命错误:无法通过引用传递参数2 INFORM:“将变量作为参数绑定到准备好的语句”(重点是我的)。让我看看是否能找到合适的副本。谢谢你的及时回复,但这也不起作用。下面是我在这段代码中遇到的错误。(!)致命错误:无法通过引用传递参数2 OK,试试看,我做了一点Woopsyys,感谢RiggsFolly最终自己解决了这个问题,与您的第二个答案相同。实际上,变量上写的必须是引用。因此,您不能在参数部分一起构建字符串。更改
$initial=$firstname[0]$namecheckresult->bind_参数('ss',$initial'.%',$namesname)
$initial=$firstname[0]。%$namecheckresult->bind_参数('ss',$initial,$name)应该做的工作…我尝试了上面你发布的,但仍然抛出一个错误。我的解决方案不起作用。