【问题标题】:Change Enum With OOP PHP使用 OOP PHP 更改枚举
【发布时间】:2017-03-14 00:19:01
【问题描述】:

我是使用 PHP 学习 Web 开发的新手,我有一个问题正在尝试解决。我的数据库中有一个 ENUM 类型,它有 2 个值:“Y”或“N”。它在我的用户表 (tbl_users) 中称为 userStatus。单击按钮时,我正在尝试使用 PHP 更改该特定用户的 ENUM 值。但是,当我单击按钮时,什么也没有发生,我不确定是按钮还是我的 PHP 或两者的组合都出错了,导致这不起作用?

PHP 更改 ENUM:

if(isset($_POST['btn-activate'])){

  if(isset($_GET['id']))
  {
   $id = $_GET['id'];
   extract($user_home->getID($userId));

   $statusY = "Y";
   $statusN = "N";

$stmt = $user->runQuery("SELECT userID,userStatus FROM tbl_users WHERE userID=:uID");
$stmt->execute(array(":userID"=>$userId));
$row=$stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount() > 0)
{
if($row['userStatus']==$statusN)
{
$stmt = $user->runQuery("UPDATE tbl_users SET userStatus=:status WHERE userId=:userID");
$stmt->bindparam(":status",$statusY);
$stmt->bindparam(":userID",$userId);
$stmt->execute();

$msg = "
          <div class='alert alert-success'>
    <button class='close' data-dismiss='alert'>&times;</button>
    <strong>WoW !</strong>  Your Account is Now Activated : <a href='manage_users.php'></a>
       </div>
       ";
}
else
{
$msg = "
          <div class='alert alert-error'>
    <button class='close' data-dismiss='alert'>&times;</button>
    <strong>sorry !</strong>  Your Account is allready Activated : <a href='manage_users.php'></a>
       </div>
       ";
}
}
else
{
$msg = "
      <div class='alert alert-error'>
   <button class='close' data-dismiss='alert'>&times;</button>
   <strong>sorry !</strong>  No Account Found : <a href='manage_users.php'></a>
   </div>
   ";
}
}
}

获取用户id函数:

 public function getID($userId)
 {
  $stmt = $this->db->prepare("SELECT * FROM tbl_users WHERE userId=:id");
  $stmt->execute(array(":id"=>$userId));
  $editRow=$stmt->fetch(PDO::FETCH_ASSOC);
  return $editRow;
 }

显示用户的表格:

  $database = new Database();
  $db = $database->dbConnection();
  $conn = $db;


          $query = "SELECT * FROM tbl_users";
          $stmt = $conn->prepare($query);
          $stmt->execute();
          while($row=$stmt->fetch(PDO::FETCH_ASSOC)){
          ?>
          <tr>

            <td><?php echo $row['userID']?></td>
            <td><?php echo $row['userName']?></td>
            <td><?php echo $row['userFirstName']."&nbsp;".$row['userSurname']; ?></td>
            <td><?php echo $row['userEmail']?></td>
            <td><?php echo $row['userRole']?></td>
            <td><?php echo $row['userStatus']?></td>

          <td>

表格末尾的我的按钮应该在点击时运行 PHP:

                <?php if($row['userStatus'] == ('N')){
               echo '  <button type="submit" class="btn btn-info"><i class="glyphicon glyphicon-ok" name="btn-activate" ></i> Activate</button>';
                }else{
                  echo '  <button class="btn btn-default"><i class="glyphicon glyphicon-eye-close"></i> Archive</button>';
                } ?>
                <button data-toggle="modal" data-target="#view-modal" data-id="<?php echo $row['userID']; ?>" id="getUser" class="btn btn-warning"><i class="glyphicon glyphicon-pencil"></i> Edit</button>

              </td>
            </tr>

提前致谢。

【问题讨论】:

    标签: php mysql enums


    【解决方案1】:

    如果前两个 if 条件中的任何一个不计算为 TRUE,则没有代码(没有任何反应)。

    考虑添加一些调试输出。至少为每个 if 添加一个 elseecho 一些调试输出。


    很奇怪,代码同时检查了$_POST$_GET。我怀疑id 是在表单提交中传递的,就像btn-activate 一样,而不是作为uri 中的参数。 (即你的意思是$_POST['id'] 吗?只是在这里猜测。

    我们在这一行中看到了对$userid 的引用:

    extract($user_home->getID($userId));
    

    但我们看不到 $userId 被分配了什么值。上一行尝试设置一个名为$id 的变量。但我们没有看到 $id 在其他任何地方使用。

    就个人而言,我会避免在没有特别需要的地方使用extract 函数。 (我不希望我的代码容易出现故障,在这个例子中,当有人向 tbl_users 添加一列时。)

    http://ericlippert.com/2014/03/05/how-to-debug-small-programs/

    【讨论】:

      【解决方案2】:

      name 属性放在您的按钮中,而不是放在&lt;i&gt; 元素中。

      <?php
      
          if($row['userStatus'] == ('N')){
      
              echo '  <button type="submit" class="btn btn-info" name="btn-activate"><i class="glyphicon glyphicon-ok"></i> Activate</button>';
      
          } else {
      
              echo '  <button class="btn btn-default"><i class="glyphicon glyphicon-eye-close"></i> Archive</button>';
      
          }
      
      ?>
      

      【讨论】:

      • 感谢您的回复,但仍然遇到同样的问题。什么都没有发生?
      猜你喜欢
      • 2013-01-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-17
      相关资源
      最近更新 更多