【问题标题】:I have a problem with my database UPDATE query in PHP我在 PHP 中的数据库 UPDATE 查询有问题
【发布时间】:2019-01-30 10:02:41
【问题描述】:

一点介绍

所以我是这种工作的新手,我正在为管理员制作一个页面,其中有关于员工、项目等的数据库信息,这些信息被组织成带有按钮的表格 >>> DELETE 或 UPDATE 用户(在这种情况下)更新功能将不起作用!

所以这两个“按钮”实际上是使用<a>onclick 调用myAjaxDeletemyAjaxAdd(我对ajax 顺便说一句不太熟悉)调用php 文件,从@ 传递数据987654325@ 字段 DELETE 按钮(或标签)似乎工作得很好,但 UPDATE 不会 我尝试更改我的sqli查询并在signle字段上进行测试,但徒劳无功

updateDbUt.php:

<?php 
    $conn = new mysqli("localhost", "root", "","gestion");
    if($_POST['action'] == 'call'){
        $id=$_POST['name'];

        $np=unserialize($_POST['np']);
        $adr=unserialize($_POST['adr']);
        $ntel=unserialize($_POST['tel']);
        $cin=unserialize($_POST['cin']);
        $pass=unserialize($_POST['pass']);
        $idEquipe=unserialize($_POST['idEquipe']);
        $mail=unserialize($_POST['mail']);
        $role=unserialize($_POST['role']);

        $q = "UPDATE `gestion`.`utilisateurs` SET `np` = '$np', `adr` ='$adr', `numTel` = '$ntel', `cin` = '$cin', `pass` = '$^pass', `idEquipe` = 'idEquipe', `adrElectronique` = '$mail', `role` = '$role' WHERE `utilisateurs`.`id` = '$id'";
        $r=mysqli_query($conn, $q);
        if ( !(mysqli_affected_rows($conn)==0 ) ) {

            echo "updated";
        } else {

        die("problem updating ").mysqli_error($conn);
        }
    }
 ?>

脚本:

function myAjaxAdd() {
      $.ajax({
           method:'POST',
           url: 'updateDbUt.php',
           data:{
              action:'call',
              name: $('#id').serialize(),
              np: $('#np').serialize(),
              adr: $('#adr').serialize(),
              tel: $('#tel').serialize(),
              cin: $('#cin').serialize(),
              mail: $('#mail').serialize(),
              idEquipe: $('#idEquipe').serialize(),
              pass: $('#pass').serialize(),
              role: $('#role').serialize(),
            },
           success:function(html) {
             alert(html);
           }

      });
 }

</script>

这是 HTML 代码以防万一:

  <form method="POST">
            <table class="table table-bordered">
                <thead>
                    <tr>
                        <th>Nom Prenom</th>
                        <th>Adresse</th>
                        <th>N°Tel</th>
                        <th>Cin</th>
                        <th>ID Utilisateur</th>
                        <th>ID Equipe</th>
                        <th>adresse electronique</th>
                        <th>pass</th>
                        <th>role</th>
                        <th>actions </th>
                      </tr>
                </thead>
                <tbody>
                  <?php

                          $sql="SELECT * FROM utilisateurs";
                          $q=mysqli_query($conn,$sql);
                            while ($t=mysqli_fetch_assoc($q)) {

                          ?>
                          <tr>
                            <td> <?php echo $t['np']; $np=$t['np']; ?> <input type="hidden" name="np" id="np" <?php echo "value='".$np."'"; ?> > </td>
                            <td> <?php echo $t['adr'];  $adr=$t['adr'];?> <input type="hidden" name="adr" id="adr" <?php echo "value='".$adr."'"; ?> ></td>
                            <td> <?php echo $t['numTel']; $numTel=$t['numTel']; ?> <input type="hidden" name="tel" id="tel" <?php echo "value='".$numTel."'"; ?> ></td>
                            <td> <?php echo $t['cin']; $cin=$t['cin']; ?> <input type="hidden" name="cin" id="cin" <?php echo "value='".$cin."'"; ?> ></td>

                            <td> <?php echo $t['id'];  $id=$t['id'];?> <input type="hidden" name="id" id="id" <?php echo "value='".$id."'" ?>></td>

                            <td> <?php echo $t['idEquipe'];  $idEquipe=$t['idEquipe'];?> <input type="hidden" name="idEquipe" id="idEquipe" <?php echo "value='".$idEquipe."'"; ?> ></td>
                            <td> <?php echo $t['adrElectronique'];  $mail=$t['adrElectronique'];?> <input type="hidden" name="mail" id="mail" <?php echo "value='".$mail."'"; ?> ></td>
                             <td> <?php echo $t['pass'];  $pass=$t['pass']; ?> <input type="hidden" name="pass" id="pass" <?php echo "value='".$pass."'"; ?> ></td>
                             <td> <?php echo $t['role'];  $role=$t['role']; ?> <input type="hidden" name="role" id="role" <?php echo "value='".$role."'"; ?> ></td>

                            <td>
                              <a class="add" title="Add" data-toggle="tooltip" onclick="myAjaxAdd()">
                                <i class="material-icons">&#xE03B;</i>
                              </a>
                              <a class="edit" title="Edit" data-toggle="tooltip" >
                                <i class="material-icons">&#xE254;</i>
                              </a>
                              <a class="delete" title="Delete" data-toggle="tooltip" onclick="myAjaxDelete()">
                                <i class="material-icons">&#xE872;</i>
                              </a>
                            </td>
                        </td>
                          </tr>
                          <?php
                            }
                           ?>
                </tbody>
            </table>

最终结果是它提醒我的更新错误 msg 它应该更新数据库 请问我需要帮助

另外:我正在使用 wampserver 进行测试

【问题讨论】:

  • ...它提醒我的更新错误消息它说什么?
  • @B001ᛦ 它只显示die msg 这是“问题更新”,没有其他来自mysqli_error()
  • die("problem updating ").mysqli_error($conn); 更改为die("problem updating ".mysqli_error($conn)); 以查看错误...或只是die(mysqli_error())
  • @B001ᛦ 同样的事情mysqli_error() 不会显示错误
  • php 和 javascript 的 serialize() / unserialize() 函数完全不相关,做的事情完全不同。您将希望在 javascript 中序列化您的表单 - 而不是单个值 - 而不是在 php.ini 中使用它。在那里你只需要一个准备好的语句来绑定这些值。

标签: php jquery database mysqli


【解决方案1】:

作为第一步,您需要修复您的查询,因为它是错误的

$q = "UPDATE `gestion`.`utilisateurs` SET `np` = '$np', `adr` ='$adr', `numTel` = '$ntel', `cin` = '$cin', `pass` = '$^pass', `idEquipe` = 'idEquipe', `adrElectronique` = '$mail', `role` = '$role' WHERE `utilisateurs`.`id` = '$id'";

你传递的是 $^pass 而不是 $pass 和 idEquipe 不是 $idEquipe 正确的查询是

$q = "UPDATE `gestion`.`utilisateurs` SET `np` = '$np', `adr` ='$adr', `numTel` = '$ntel', `cin` = '$cin', `pass` = '$pass', `idEquipe` = '$idEquipe', `adrElectronique` = '$mail', `role` = '$role' WHERE `utilisateurs`.`id` = '$id'";

第二个我建议你显示你的查询并在 phpmyadmin 中执行它,因为你正在使用 wampserver

【讨论】:

  • 感谢您注意到这一点,我确实更正了这些但也没有工作,查询也是从 wamp 服务器获取的来自 phpmyadmin
  • 您应该打印 $q 变量并在 phpmyadmin 中运行它,因为您可能缺少字段或某些字段类型与查询中的值不兼容
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-21
  • 2014-11-18
  • 1970-01-01
相关资源
最近更新 更多