1. <small id='0w4pX'></small><noframes id='0w4pX'>

  2. <tfoot id='0w4pX'></tfoot>
      <bdo id='0w4pX'></bdo><ul id='0w4pX'></ul>
    1. <legend id='0w4pX'><style id='0w4pX'><dir id='0w4pX'><q id='0w4pX'></q></dir></style></legend>

      <i id='0w4pX'><tr id='0w4pX'><dt id='0w4pX'><q id='0w4pX'><span id='0w4pX'><b id='0w4pX'><form id='0w4pX'><ins id='0w4pX'></ins><ul id='0w4pX'></ul><sub id='0w4pX'></sub></form><legend id='0w4pX'></legend><bdo id='0w4pX'><pre id='0w4pX'><center id='0w4pX'></center></pre></bdo></b><th id='0w4pX'></th></span></q></dt></tr></i><div id='0w4pX'><tfoot id='0w4pX'></tfoot><dl id='0w4pX'><fieldset id='0w4pX'></fieldset></dl></div>
    2. 使用一个具有可变数量的输入变量的 bind_param()

      时间:2023-07-31

          <tfoot id='3dG9u'></tfoot>
          • <bdo id='3dG9u'></bdo><ul id='3dG9u'></ul>

            <small id='3dG9u'></small><noframes id='3dG9u'>

              <legend id='3dG9u'><style id='3dG9u'><dir id='3dG9u'><q id='3dG9u'></q></dir></style></legend>

              <i id='3dG9u'><tr id='3dG9u'><dt id='3dG9u'><q id='3dG9u'><span id='3dG9u'><b id='3dG9u'><form id='3dG9u'><ins id='3dG9u'></ins><ul id='3dG9u'></ul><sub id='3dG9u'></sub></form><legend id='3dG9u'></legend><bdo id='3dG9u'><pre id='3dG9u'><center id='3dG9u'></center></pre></bdo></b><th id='3dG9u'></th></span></q></dt></tr></i><div id='3dG9u'><tfoot id='3dG9u'></tfoot><dl id='3dG9u'><fieldset id='3dG9u'></fieldset></dl></div>
                <tbody id='3dG9u'></tbody>
              1. 本文介绍了使用一个具有可变数量的输入变量的 bind_param()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                问题描述

                我尝试像这样使用变量绑定:

                I try to use variable binding like this:

                $stmt = $mysqli->prepare("UPDATE mytable SET myvar1=?, myvar2=... WHERE id = ?")) {
                $stmt->bind_param("ss...", $_POST['myvar1'], $_POST['myvar2']...);
                

                但有些 $_POST['...'] 可能是空的,所以我不想在数据库中更新它们.

                but some of the $_POST['...'] might be empty so I don't want to update them in the DB.

                考虑空 $_POST['...'] 的所有不同组合是不切实际的,虽然我可以根据我的需要构建字符串UPDATE mytable SET...",但 bind_param() 是不同的野兽.

                It's not practical to take into account all the different combination of empty $_POST['...'] and although I can build the string " UPDATE mytable SET..." to my needs, bind_param() is a different beast.

                我可以尝试将其调用构建为字符串并在其上使用 eval() 但感觉不对:(

                I could try building its call as a string and use eval() on it but it doesn't feel right :(

                推荐答案

                您可以使用 call_user_func_array 函数调用带有可变编号或参数的 bind_param 方法:

                $paramNames = array('myvar1', 'myvar2', /* ... */);
                $params = array();
                foreach ($paramNames as $name) {
                    if (isset($_POST[$name]) && $_POST[$name] != '') {
                        $params[$name] = $_POST[$name];
                    }
                }
                if (count($params)) {
                    $query = 'UPDATE mytable SET ';
                    foreach ($params as $name => $val) {
                        $query .= $name.'=?,';
                    }
                    $query = substr($query, 0, -1);
                    $query .= 'WHERE id = ?';
                    $stmt = $mysqli->prepare($query);
                    $params = array_merge(array(str_repeat('s', count($params))), array_values($params));
                    call_user_func_array(array(&$stmt, 'bind_param'), $params);
                }
                

                这篇关于使用一个具有可变数量的输入变量的 bind_param()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                上一篇:INSERT - 绑定变量的数量与准备好的语句中的字段 下一篇:单值 Mysqli

                相关文章

                最新文章

                <tfoot id='0xPth'></tfoot>
                <legend id='0xPth'><style id='0xPth'><dir id='0xPth'><q id='0xPth'></q></dir></style></legend>

                  <bdo id='0xPth'></bdo><ul id='0xPth'></ul>

                  <small id='0xPth'></small><noframes id='0xPth'>

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