• <small id='JenSK'></small><noframes id='JenSK'>

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

        php mysqli WHERE IN (?,?,? ...)

        时间:2023-07-30
        <legend id='UYTS9'><style id='UYTS9'><dir id='UYTS9'><q id='UYTS9'></q></dir></style></legend>

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

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

                    <tbody id='UYTS9'></tbody>
                  本文介绍了php mysqli WHERE IN (?,?,? ...)的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  根据http://us2.php.net/manual/en/mysqli-stmt.bind-param.php,不同的类型是:

                  i   corresponding variable has type integer
                  d   corresponding variable has type double
                  s   corresponding variable has type string
                  b   corresponding variable is a blob and will be sent in packets
                  

                  但是,你怎么能处理这个:

                  However, how can you handle this:

                  ->prepare("SELECT blabla FROM foo WHERE id IN (?)")
                  

                  在哪里?将是一个 id 列表.可能有一项或多项:

                  Where ? would be a list of ids. There could be one or more items:

                  $ids = "3,4,78";
                  ->bind_param('s',$ids);
                  

                  这可能吗?

                  我想使用准备好的语句,因为它将在循环中执行.

                  I'd like to use prepared statements because it will be executed in a loop.

                  推荐答案

                  如果你有一个大小不同的变量列表,你想绑定到 IN 语句的每个调用,最简单的方法是以编程方式生成 SQL 字符串并使用循环来绑定变量:

                  If you have a list of variables that differs in size every call that you wanto to bind to an IN-statement, the most simple way would be to generate the SQL string programatically and use a loop to bind the variables:

                  /**
                   * @param  array  $values
                   * @param  mysqli $db
                   * @return mysqli_stmt
                   */
                  function bindInValues(array $values, mysqli $db)
                  {
                      $sql = sprintf('SELECT blabla FROM foo WHERE id IN (%s)',
                          implode(', ', array_fill(0, count($values), '?'))
                      );
                      $stmt = $db->prepare($sql);
                      foreach ($values as $value) {
                          $stmt->bind_param('s', $value);
                      }
                      return $stmt;
                  }
                  

                  如果你喜欢call_user_func_array,你可以使用动态方法调用并且没有循环.

                  If you like call_user_func_array you can use dynamic method invocation and go along without a loop.

                  /**
                   * @param  array  $values
                   * @param  mysqli $db
                   * @return mysqli_stmt
                   */
                  function bindInValues(array $values, mysqli $db)
                  {
                      $sql = sprintf('SELECT blabla FROM foo WHERE id IN (%s)',
                          implode(', ', array_fill(0, count($values), '?'))
                      );
                      $stmt = $db->prepare($sql);
                      array_unshift($values, implode('', array_fill(0, count($values), 's')));
                      call_user_func_array(array($stmt, 'bind_param'), $values);
                      return $stmt;
                  }
                  

                  这篇关于php mysqli WHERE IN (?,?,? ...)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:调用非对象上的成员函数 bind_param()(尽管经过研究 下一篇:mysqli 图像 blob 插入不起作用

                  相关文章

                  最新文章

                    • <bdo id='E8RdR'></bdo><ul id='E8RdR'></ul>

                    <legend id='E8RdR'><style id='E8RdR'><dir id='E8RdR'><q id='E8RdR'></q></dir></style></legend>

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

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

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