php - PHP:使用外键更新数据
问题描述
我目前正在更新项目列表,它包含一些外键。我有 4 张桌子,它们是:
项目 ( itemId , itemName)
员工(员工编号、员工姓名、员工密码、员工电子邮件、员工类型ID*)
Item_Staff( itemstaffid ,itemid*,staffid*,itemqtty,expireddate,instockdate,itemstatus)
人员类型(人员类型id, stypeName)
我的问题是我可以在表单中编辑项目详细信息,但即使仍重定向到显示页面,项目详细信息也不会更新。它没有任何错误,所以我想知道逻辑错误在哪里。到目前为止,这些是我尝试过的代码。
pedit-item.php
$conn = mysqli_connect($dbhost, $dbuser, $dbpass, $dbname);
$itemstaffid=$_GET['itemstaffid'];
$qry=mysqli_query($conn,"SELECT * from item_staff d INNER JOIN item i ON d.itemID=i.itemID INNER JOIN staff s ON d.staffID=s.staffID");
while ($res=mysqli_fetch_array($qry))
{
$itemstaffid = $_POST['itemStaffId'];
$itemid=$res['itemid'];
$staffid=$res['staffid'];
$itemqtty=$res['itemqtty'];
$expireddate=$res['expireddate'];
$instockdate=$res['instockdate'];
$itemstatus=$res['itemstatus'];
}
if (isset($_POST['update']))
{
$itemstaffid=$_POST['itemstaffid'];
$itemid = $_POST['itemid'];
$staffid = $_POST['staffid'];
$itemqtty=$_POST['itemqtty'];
$expireddate=$_POST['expireddate'];
$instockdate=$_POST['instockdate'];
$itemstatus=$_POST['itemstatus'];
$result = mysqli_query($conn,"UPDATE item_staff set itemstaffid='$itemstaffid',itemid='$itemid',staffid='$staffid',itemqtty='$itemqtty',expireddate='$expireddate',instockdate='$instockdate',itemstatus='$itemstatus' where 'itemstaffid'='$itemstaffid'" );
if ($result)
{
header("location: update-item.php");
}
else
{
echo "Failed";
}
}
然后,我想在这里显示它。
$sql="SELECT * from item_staff d INNER JOIN item i ON d.itemID=i.itemID INNER JOIN staff s ON d.staffID=s.staffID";
$result=mysqli_query($conn, $sql);
$row=mysqli_num_rows($result);
if ($row > 0)
{
while ($res=mysqli_fetch_array($result))
{
echo '<tr>';
echo '<td>'.$res['itemStaffId'].'</td>';
echo '<td>'.$res['itemId'].'</td>';
echo '<td>'.$res['staffId'].'</td>';
echo '<td>'.$res['itemQtty'].'</td>';
echo '<td>'.$res['expiredDate'].'</td>';
echo '<td>'.$res['inStockDate'].'</td>';
echo '<td>'.$res['itemstatus'].'</td>';
echo "<td><a href= \"edit-item.php?itemStaffId=$res[itemStaffId]\"><input type='submit' value='EDIT'></a>";
echo "<td><a href= \"delete.php?itemStaffId=$res[itemStaffId]\"><input type='submit' value='DELETE'></a>";
echo '</tr>';
}
}
解决方案
我认为您的变量$itemstaffid
已在if
块中被覆盖,因此在执行查询时,该where
子句将找不到所需的记录。您应该显示更新查询以进行测试。
推荐阅读
- python - 如何将字典存储在为特定数据集创建的 genism 中?
- .htaccess - htaccess 规则返回页面未找到
- javascript - javascript递归优化
- html-email - VML 响应式背景图片
- c# - 将 Wndows 窗体转换为 Windows 用户控件
- javascript - 如果您将类名作为字符串,如何在 Javascript 中创建对象?
- dns - EDNS 客户端 IP 支持 - 在带有 BIND 的 Linux VM 上(充当转发器)
- hyperledger-fabric - 链码安装在 Hyperledger 的弹珠示例上失败 - 承诺被拒绝:错误:14 不可用:EOF
- java - 如何从 ble 设备获取正确(解码)的制造商广告数据?
- python - 如何获得 Python 3.7 新的数据类字段类型?