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

        <bdo id='zy6F4'></bdo><ul id='zy6F4'></ul>
      1. <legend id='zy6F4'><style id='zy6F4'><dir id='zy6F4'><q id='zy6F4'></q></dir></style></legend>

        PHP 警告:PDOStatement::execute(): SQLSTATE[HY093]: 无效的参

        时间:2023-10-04

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

            <tbody id='E78D4'></tbody>
            <bdo id='E78D4'></bdo><ul id='E78D4'></ul>
              <tfoot id='E78D4'></tfoot>

            • <legend id='E78D4'><style id='E78D4'><dir id='E78D4'><q id='E78D4'></q></dir></style></legend>

                  <i id='E78D4'><tr id='E78D4'><dt id='E78D4'><q id='E78D4'><span id='E78D4'><b id='E78D4'><form id='E78D4'><ins id='E78D4'></ins><ul id='E78D4'></ul><sub id='E78D4'></sub></form><legend id='E78D4'></legend><bdo id='E78D4'><pre id='E78D4'><center id='E78D4'></center></pre></bdo></b><th id='E78D4'></th></span></q></dt></tr></i><div id='E78D4'><tfoot id='E78D4'></tfoot><dl id='E78D4'><fieldset id='E78D4'></fieldset></dl></div>
                  本文介绍了PHP 警告:PDOStatement::execute(): SQLSTATE[HY093]: 无效的参数号:没有绑定参数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

                  问题描述

                  我正在尝试创建一个表单,提交时将更新包含用户信息的数据库.我正在使用 PDO 和事务,但在提交表单时不断收到以下错误

                  I'm trying to create a form that when submitted will update a database that contains user's information. I am using PDO and transactions but keep getting the following error when the form is submitted

                  PHP Warning:  PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: no parameters were bound in /var/www/html/resources/memfuncs.php on line 75
                  

                  这是我的代码:

                  Settings.php

                  if(isset($_POST['username'])){
                      $id = $_SESSION['id'];
                      $username = $_POST['username'];
                      $first_name = $_POST['first_name'];
                      $last_name = $_POST['last_name'];
                      $email = $_POST['email'];
                      $password1 = $_POST['password1'];
                      $password2 = $_POST['password2'];
                  
                      if ($password1 === $password2){
                      updatesettings($id, $username, $first_name, $last_name, $email, $password);
                      }
                  }
                  

                  我没有包含表单的 HTML,尽管它也在上面的文件中.

                  I haven't included the HTML for the form, although it is also in the above file.

                  memfuncs.php

                  function updatesettings($id, $username, $first_name, $last_name, $email){
                      global $db;
                  
                      $db->beginTransaction();
                  
                      try {
                          // UPDATE USERNAME
                          $st2 = $db->prepare("UPDATE users SET username = :username WHERE id = :id");
                          $st2->execute();
                          $st2->bindParam (":username", $username, PDO::PARAM_STR);
                          $st2->bindParam (":id", $id, PDO::PARAM_INT);
                          //UPDATE FIRST + LAST NAME
                          $st = $db->prepare("UPDATE users SET first_name = :first_name AND last_name = :last_name WHERE id = :id");
                          $st->execute();
                          $st->bindParam (":first_name", $first_name, PDO::PARAM_STR);
                          $st->bindParam (":last_name", $last_name, PDO::PARAM_STR);
                          $st->bindParam (":id", $id, PDO::PARAM_INT);
                          // UPDATE Email
                          $st3 = $db->prepare("UPDATE users SET email = :email WHERE id = :id");
                          $st3->execute();
                          $st3->bindParam(":email", $email, PDO::PARAM_STR);
                          $st3->bindParam(":id", $id, PDO::PARAM_INT);
                          // COMMIT CHANGES
                          $db->commit();
                      } catch (Exception $error){
                          $db->rollBack();
                          echo "Failed: " . $error->getMessage();
                      }
                  
                  }   
                  

                  我做错了什么?

                  推荐答案

                  你执行得早,execute()应该是你准备和绑定后做的最后一件事:

                  You executed to early, execute() should be the last thing you do after preparing and binding:

                  $st3 = $db->prepare("UPDATE users SET email = :email WHERE id = :id");
                  $st3->bindParam(":email", $email, PDO::PARAM_STR);
                  $st3->bindParam(":id", $id, PDO::PARAM_INT);
                  $st3->execute();
                  

                  因此,当您 execute() 时,请在 3 个地方修复此问题,如果您要捕获异常,请捕获 PDOException 并放入 $db->beginTransaction(); 在 try 块中,因为这可能会失败!

                  So fix this in the 3 places when you execute(), also if you're going to catch exceptions catch PDOException and put $db->beginTransaction(); in the try block because that can fail!

                  这篇关于PHP 警告:PDOStatement::execute(): SQLSTATE[HY093]: 无效的参数号:没有绑定参数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持html5模板网!

                  上一篇:PHP PDO SQL 只返回一行数据而不是所有行 下一篇:PHP、MySQL、PDO - 从 UPDATE 查询中获取结果?

                  相关文章

                  最新文章

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

                1. <tfoot id='HGQgb'></tfoot>
                2. <small id='HGQgb'></small><noframes id='HGQgb'>

                      <bdo id='HGQgb'></bdo><ul id='HGQgb'></ul>
                  1. <legend id='HGQgb'><style id='HGQgb'><dir id='HGQgb'><q id='HGQgb'></q></dir></style></legend>