我使用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'/>
<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数据库中的表字段为空并且由于某些原因而为空。
所以,如果您知道如何解决这个问题,请告诉我,我真的很感激吗?
答案 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>