更新查询仅使数据库表字段为空

时间:2017-08-13 18:50:01

标签: php mysql oop sql-update

我使用PHP OOP进行了更新查询。基本上这里是itemedit.php页面,用户可以在其中更新数据库表字段:

    <form action='itemedit.php?i=$i' method='POST'>
                                    <td>$i</td>
                                    <td><input type='text' name='e' value='".$menuSet->$func()."'/></td>
                                    <td>
                                        <input type='submit' value='Edit'/>&nbsp; 
                                        <a title='Remove' href='itemdelete.php?i=$i'><span class='glyphicon glyphicon-remove'></span></a>
                                    </td>
                                    </tr>
                                    </form>

如果你想了解这背后的理论,请参阅我的另一个问题here ......

然后在这里我编写了这个用于更新该自定义字段的代码:

public function EditMenuItem($i,$e)
        {
            if(!empty($i))
            {
                $adm = $this->db->prepare("UPDATE menu_nav SET menu_link_$i = ?");
                $adm->bindParam(1, $e, PDO::PARAM_STR);
                $adm->execute();
            }
            else
            {
                header("Location: php/includes/errors/012.php");
                exit();
            }
        }

以下是该表单文件的操作:

if (isset($_GET['i'])){
    $i = $_GET['i'];
    $e = $_POST['e'];
    $editItem = new Menus();

    if(isset($_POST['yes'])){
        $editItem->EditMenuItem($i,$e);
        echo '<META HTTP-EQUIV="Refresh" Content="0; URL=menus.php">';   
        exit; 
    }
    if(isset($_POST['no'])){
        echo '<META HTTP-EQUIV="Refresh" Content="0; URL=menus.php">';    
        exit; 
    }

    echo "
    <div class='content-wrapper'>
        <section class='content-header'>
            <h1>
                Editing Menu Item
                <small></small>
            </h1>
            <ol class='breadcrumb'>
                <li class='active'>itemedit.php</li>
            </ol>
        </section>
        <section class='content' style='text-align:center;'>
            <form action='' method='POST'>
                <h5><strong> 
                    Are you sure you want to change the selected item ?</br></br>
                </strong></h5>   
                <p> 
                    <button name='yes' type='submit' class='btn btn-primary'>Yes</button>
                    <button name='no' type='submit' class='btn'>No</button>
                </p> 
            </form> 
        </section>
    </div>
    ";

它工作正常,但问题是它只能使MySQL数据库中的表字段为空并且由于某些原因而为空。

所以,如果您知道如何解决这个问题,请告诉我,我真的很感激吗?

1 个答案:

答案 0 :(得分:1)

这是因为在用户选择是或否的第二次迭代中,表单没有$_POST['e']的值。

更改此

<p>
<button name='yes' type='submit' class='btn btn-primary'>Yes</button>
<button name='no' type='submit' class='btn'>No</button>
</p> 

<p>
<input type='hidden' name='e' value='<?php echo $e;?>'>
<button name='yes' type='submit' class='btn btn-primary'>Yes</button>
<button name='no' type='submit' class='btn'>No</button>
</p>