• <bdo id='qtEKj'></bdo><ul id='qtEKj'></ul>
    <i id='qtEKj'><tr id='qtEKj'><dt id='qtEKj'><q id='qtEKj'><span id='qtEKj'><b id='qtEKj'><form id='qtEKj'><ins id='qtEKj'></ins><ul id='qtEKj'></ul><sub id='qtEKj'></sub></form><legend id='qtEKj'></legend><bdo id='qtEKj'><pre id='qtEKj'><center id='qtEKj'></center></pre></bdo></b><th id='qtEKj'></th></span></q></dt></tr></i><div id='qtEKj'><tfoot id='qtEKj'></tfoot><dl id='qtEKj'><fieldset id='qtEKj'></fieldset></dl></div>

      <small id='qtEKj'></small><noframes id='qtEKj'>

      <legend id='qtEKj'><style id='qtEKj'><dir id='qtEKj'><q id='qtEKj'></q></dir></style></legend>
      1. <tfoot id='qtEKj'></tfoot>
      2. 不能在 mysqli_stmt 对象上使用 call_user_func_array

        时间:2023-07-29
          <bdo id='ENCsC'></bdo><ul id='ENCsC'></ul>

            <legend id='ENCsC'><style id='ENCsC'><dir id='ENCsC'><q id='ENCsC'></q></dir></style></legend>
              <tbody id='ENCsC'></tbody>

            <small id='ENCsC'></small><noframes id='ENCsC'>

              <i id='ENCsC'><tr id='ENCsC'><dt id='ENCsC'><q id='ENCsC'><span id='ENCsC'><b id='ENCsC'><form id='ENCsC'><ins id='ENCsC'></ins><ul id='ENCsC'></ul><sub id='ENCsC'></sub></form><legend id='ENCsC'></legend><bdo id='ENCsC'><pre id='ENCsC'><center id='ENCsC'></center></pre></bdo></b><th id='ENCsC'></th></span></q></dt></tr></i><div id='ENCsC'><tfoot id='ENCsC'></tfoot><dl id='ENCsC'><fieldset id='ENCsC'></fieldset></dl></div>
              • <tfoot id='ENCsC'></tfoot>
                  本文介绍了不能在 mysqli_stmt 对象上使用 call_user_func_array的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在为 MySQLi 编写一个包装类.在那里,我正在编写一个函数来接受查询和可变数量的参数,我可以在其中调用 mysqli_stmt::bind_param.代码如下:

                  I am writing a wrapper class for MySQLi. In there, I am writing a function to accept a query and variable number of parameters where I can invoke mysqli_stmt::bind_param. Here is the code:

                  <?php
                      class DbHelper {
                          ....
                          public function Execute($query, $params){
                              $this->open(); # Opens a connection to the database using MySQLi API
                              $stmt = $this->mysqli->prepare($query);
                              try{
                                  $result = call_user_func_array(array($stmt, 'bind_param'), $params);
                              }
                              catch(Exception $ex){
                                  # Handle Exception
                              }
                          }
                          ....
                      }
                  ?>
                  

                  这是我调用函数的方式:

                  Here's how I am calling the function:

                  <?php
                      $db = new DbHelper();
                      $params = array('i', $stateID);
                      $result = $db->Execute('SELECT * FROM mst_cities WHERE State_ID = ?', $params);    
                  ?>
                  

                  当我运行代码时,我收到如下警告:
                  警告:mysqli_stmt::bind_param() 的参数 2 应为引用,值在......中给出.

                  When I run the code, I get an warning as this:
                  Warning: Parameter 2 to mysqli_stmt::bind_param() expected to be a reference, value given in......

                  我该怎么办?

                  推荐答案

                  来自 文档:

                  注意:

                  将 mysqli_stmt_bind_param() 与 call_user_func_array() 结合使用时必须小心.请注意,mysqli_stmt_bind_param() 需要通过引用传递参数,而 call_user_func_array() 可以接受可以表示引用或值的变量列表作为参数.

                  Care must be taken when using mysqli_stmt_bind_param() in conjunction with call_user_func_array(). Note that mysqli_stmt_bind_param() requires parameters to be passed by reference, whereas call_user_func_array() can accept as a parameter a list of variables that can represent references or values.

                  评论中有一些解决方法,例如 看到这个:

                  There are some workarounds in the comments, for example see this:

                  call_user_func_array(array($stmt, 'bind_param'), refValues($params));
                  
                  function refValues($arr)
                  {
                      if (strnatcmp(phpversion(),'5.3') >= 0) //Reference is required for PHP 5.3+
                      {
                          $refs = array();
                          foreach($arr as $key => $value)
                              $refs[$key] = &$arr[$key];
                          return $refs;
                      }
                      return $arr;
                  }
                  

                  这篇关于不能在 mysqli_stmt 对象上使用 call_user_func_array的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:扩展 mysqli_result 下一篇:PHP 5.5.x 中已弃用的 MySQL 扩展

                  相关文章

                  最新文章

                    <bdo id='RGJ7y'></bdo><ul id='RGJ7y'></ul>

                  <small id='RGJ7y'></small><noframes id='RGJ7y'>

                  <i id='RGJ7y'><tr id='RGJ7y'><dt id='RGJ7y'><q id='RGJ7y'><span id='RGJ7y'><b id='RGJ7y'><form id='RGJ7y'><ins id='RGJ7y'></ins><ul id='RGJ7y'></ul><sub id='RGJ7y'></sub></form><legend id='RGJ7y'></legend><bdo id='RGJ7y'><pre id='RGJ7y'><center id='RGJ7y'></center></pre></bdo></b><th id='RGJ7y'></th></span></q></dt></tr></i><div id='RGJ7y'><tfoot id='RGJ7y'></tfoot><dl id='RGJ7y'><fieldset id='RGJ7y'></fieldset></dl></div>
                    <legend id='RGJ7y'><style id='RGJ7y'><dir id='RGJ7y'><q id='RGJ7y'></q></dir></style></legend>

                    1. <tfoot id='RGJ7y'></tfoot>