【问题标题】:binding parameters dynamically in mysqli prepared statement在mysqli准备好的语句中动态绑定参数
【发布时间】:2017-06-23 05:10:17
【问题描述】:

我正在尝试从某些过滤器中获取用户偏好,然后根据他的选择生成带有动态参数的动态查询。我之前也在本地服务器上实现了以下代码,它运行良好,但这次我试图让它在远程 Web 托管服务器上运行,但它不工作。

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($qry)的结果是:

string(36) "SELECT * FROM users WHERE acctype=? "

var_dump($param);的结果是:

array(2) { [0]=> string(1) "s" [1]=> string(6) "Leader" }

在实时服务器上,我没有收到任何错误或警告。代码未达到以下语句:

echo "Step Main: Now it should work";

我在哪里犯了错误,或者这里有什么问题?请帮忙。

【问题讨论】:

  • 尝试在你的代码上面设置。 error_reporting(E_ALL); ini_set('display_errors', 1);

标签: php oop mysqli prepared-statement dynamic-programming


【解决方案1】:

在我的本地机器上运行此代码时,我发现 refValues($param) 给出了错误。看起来这是一个用户定义的函数,您的代码中可能缺少它。再次检查并告诉我。

【讨论】:

  • 是的,你是对的......不知道我是怎么犯这个错误的,但你的回答确实解决了这个问题。谢谢...
猜你喜欢
  • 2020-12-11
  • 2014-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多