【问题标题】:unknown number of parameters in bind_param [duplicate]bind_param 中的参数数量未知 [重复]
【发布时间】:2014-07-08 08:28:29
【问题描述】:

当你不知道要接收的参数数量时,你们会怎么做?

例如:

if($a==1) $filter.=" AND u.name = ?";
if($b==1) $filter.=" AND u.address = ?";
if($c==1) $filter.=" AND u.age = ?";
if($d==1) $filter.=" AND u.city = ?";
ETC...

$stmt->prepare("SELECT id
                FROM users u
                WHERE u.cp = ?
                ".$filter);

$stmt->bind_param("i", $cp);

现在呢?如果您收到$a = 1,您将收到错误消息,因为您只在bind_param 上传递了1 个参数。所以你不知道你会收到 1、2、3 还是 4 个参数,我不想做很多 IF 或者我必须使用循环来计算参数的数量?

【问题讨论】:

    标签: php mysql mysqli


    【解决方案1】:

    您必须在添加条件时管理参数列表(类型和值)。这意味着您需要使用call_user_func_array 将值列表传递给bind_param。

    基本上,在您的每个if 语句中,不仅要添加条件,还要添加参数类型(例如$types .= 'i')和参数(例如$args[]=$arg)。

    您可以在bind_param 文档的此评论中找到一个很好的示例:http://www.php.net/manual/en/mysqli-stmt.bind-param.php#109256

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-12-15
      • 2016-04-07
      • 1970-01-01
      • 1970-01-01
      • 2015-08-22
      • 2019-07-10
      • 2012-08-11
      • 1970-01-01
      相关资源
      最近更新 更多