【问题标题】:MySQLI bind params using call_user_func_array not workingMySQLI 使用 call_user_func_array 绑定参数不起作用
【发布时间】:2015-10-24 05:41:27
【问题描述】:

为什么它不起作用?我正在尝试根据用户发送的 GET 数据动态绑定参数。不知道有什么问题。

    $bind_param = array();
    $array_param = array();
    $params = array();
    $i = 0;
    $bind_param[$i] = "i";
    $array_param[$i] = $_GET['p2'];

    $query = "SELECT * from point where fixture_id = ? ";

    if(isset($_GET['p1'])){
        $query .= "and user_id = ? ";
        $i++;
        $bind_param[$i] = "i";
        $array_param[$i] = $_GET['p1'];
    }

    $param_type = '';
    $n = count($bind_param);
    for($i = 0; $i < $n; $i++) {
      $param_type .= $bind_param[$i];
    }

    $params[] = $param_type;
    for($i = 0; $i < $n; $i++) {
      $params[] = $array_param[$i];
    }

    $stmt = $mysqli->prepare($query);

    call_user_func_array(array($stmt, 'bind_param'), $params);

    $stmt->execute();

错误:

PHP Warning:  Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given

【问题讨论】:

    标签: php mysqli bind


    【解决方案1】:

    尝试将引用而不是值放入数组中(注意与号):

    $params[] = &$param_type;
    for($i = 0; $i < $n; $i++) {
      $params[] = &$array_param[$i];
    }
    

    【讨论】:

    • 哇。我只是错过了&amp; 符号。我永远不知道将&amp; 放在数组变量的前面有什么用。
    • @ggDeGreat 您可以在PHP Manual 中阅读有关参考的更多信息。如果这回答了您的问题,请将其标记为已接受。
    猜你喜欢
    • 2010-12-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-23
    • 1970-01-01
    • 2014-12-20
    • 2016-02-14
    相关资源
    最近更新 更多