Php 在mysqli prepared语句中动态绑定参数
我试图从一些过滤器中获取用户偏好,然后根据他的选择生成一个带有动态参数的动态查询。我之前也在本地服务器上实现了以下代码,它工作得很好,但这次我试图使它在远程web托管服务器上工作,但它不工作Php 在mysqli prepared语句中动态绑定参数,php,oop,mysqli,prepared-statement,dynamic-programming,Php,Oop,Mysqli,Prepared Statement,Dynamic Programming,我试图从一些过滤器中获取用户偏好,然后根据他的选择生成一个带有动态参数的动态查询。我之前也在本地服务器上实现了以下代码,它工作得很好,但这次我试图使它在远程web托管服务器上工作,但它不工作 function set_filters() { $paramtype=array(); $paramvalues=array(); $params=array(); $myqry = "SELECT * FROM users WHERE "; $initflag=0; if(isset($_P
function set_filters() {
$paramtype=array();
$paramvalues=array();
$params=array();
$myqry = "SELECT * FROM users WHERE ";
$initflag=0;
if(isset($_POST["memtype"]) && !($_POST["memtype"]=="selects"))
{
$myqry.= "acctype=? ";
$initflag=1;
$paramtype[]="s";
$paramvalues[]=$_POST['memtype'];
}
if(isset($_POST["country"]) && !$_POST["country"]=="selects")
{
if($initflag == 0) {
$myqry.= "country=? ";
}
else {
$myqry.= "AND country=? ";
}
$initflag=1;
$paramtype[]="s";
$paramvalues[]=$_POST['country'];
}
$params[] = implode("",$paramtype);
$params = array_merge($params, $paramvalues);
echo "<script>alert('" . $myqry . "')</script>";
return array($myqry, $params);
}
$filterres=set_filters();
$qry=$filterres[0];
$param=$filterres[1];
var_dump($qry);
var_dump($param);
if($result1 = $con->prepare($qry)){
call_user_func_array(array($result1, 'bind_param'), refValues($param));
echo "Step Main: Now it should work";
$result1->execute();
$res = $result1->get_result();
if($res->num_rows == 0) {
echo "Cannot reach the server.";
exit();
}
else {
echo $res->num_rows;
var_dump($param)的结果是:
string(36) "SELECT * FROM users WHERE acctype=? "
array(2) { [0]=> string(1) "s" [1]=> string(6) "Leader" }
在live server上,我没有收到任何错误或警告。代码未到达以下语句:
echo "Step Main: Now it should work";
我在哪里犯了错误,或者这里出了什么问题?请提供帮助。在本地计算机上运行此代码时,我发现refValues($param)出现错误。这似乎是一个用户定义的函数,您的代码中可能缺少它。再次检查并让我知道。尝试将代码设置为上面的值<代码>错误报告(E_全部);ini设置(“显示错误”,1)代码>是的,你是对的。。。我不知道我是怎么犯这个错误的,但你的回答确实解决了问题。谢谢