1

我正在使用 MysqliDb 类,它给出了这个错误:

“已弃用:第 101 行的 C:...\MySqlDb.php 中已弃用调用时传递引用”、340、348 和 375

array_push 函数在哪里:

array_push($params, &$bindParams[$prop]);

array_push($this->_bindParams, &$tableData[$prop]);

我删除了“&”,但它只适用于这些 /\ 两个,但不适用于这些 / 两个(给出了很多错误)

if($hasConditional) {
            if ($this->_where) {
                $this->_bindParams[0] .= $this->_whereTypeList;
                foreach ($this->_where as $prop => $val) {
                    array_push($this->_bindParams, &$this->_where[$prop]);
                }
            }   
        }

while ($field = $meta->fetch_field()) {
            array_push($parameters, &$row[$field->name]);
        }

MysqliDb 类可以在这里找到:https ://github.com/ajillion/PHP-MySQLi-Database-Class

4

1 回答 1

3

array_push相当于将元素附加到数组。您可以重写该行

     array_push($this->_bindParams, &$this->_where[$prop]);

     $this->_bindParams[] =  & $this->_where[$prop];

在你的情况下。


E_DEPRECATED 错误是一个警告顺便说一句。通过引用传递仍然是可能的。为了避免警告,您也可以使用这种笨拙的解决方法强制它:

call_user_func_array("array_push", array(&$this->_bindParams, &$this->_where[$prop]));

(实际上这两个参数都需要通过引用传递。)

于 2011-07-03T11:27:06.390 回答