php - 如何使用 mysql 使用 php 中的按钮删除一行
问题描述
我在从表中删除行时遇到问题。当我单击“删除”按钮时,它确实将我带到了下一页,并显示“从播放器中删除了 0 行”。基本上,它执行正确,但我无法删除选定的行。我已经能够显示并添加到表格中。
播放器.php
<table id="table table-bordered">
<tr>
<th>Id#</th>
<th>Player(s)</th>
<th>Position</th>
</tr>
if(!($stmt = $mysqli->prepare("SELECT id_Player, name_Player, position_Player FROM player s ORDER BY position_Player ASC"))){
echo "Prepare failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->execute())
{
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($id_Player, $name_Player, $position_Player))
{
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
while($stmt->fetch()){
echo "<tr><td> $id_Player </td> <td> $name_Player </td><td> $position_Player </td>";
?>
<td>
<form id="delete" method="post" action="deletePlayers.php">
<input type="submit" name="id_Player" value="Delete!"/>
</form>
</td>
</tr>
删除播放器.php
if(!($stmt = $mysqli->prepare("DELETE FROM player WHERE id_Player = ?"))){
echo "Prepare failed: " . $stmt->errno . " " . $stmt->error;}
if(!($stmt->bind_param("s",$_POST['id_Player']))){
echo "Bind failed: " . $stmt->errno . " " . $stmt->error;}
if(!$stmt->execute()){
echo "Execute failed: " . $stmt->errno . " " . $stmt->error;}
else {
echo "Removed " . $stmt->affected_rows . " row from player. <br/><br/><strong> Returning to 'Add Players'</strong>";}
解决方案
问题在于这行代码,
if(!($stmt->bind_param("s",$_POST['id_Player']))){}
这里的值$POST['id_player']
是Delete!
因为您在 HTML 代码中传递了输入类型提交的名称,并且我认为您的数据库中没有任何 id 等于Delete!
。
解决方案
你需要做的是你需要使用一个隐藏的输入来保存这样的id_Player
值,
if(!($stmt = $mysqli->prepare("SELECT id_Player, name_Player, position_Player FROM player s ORDER BY position_Player ASC"))){
echo "Prepare failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->execute())
{
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($id_Player, $name_Player, $position_Player))
{
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
while($stmt->fetch()){
echo "<tr><td> $id_Player </td> <td> $name_Player </td><td> $position_Player </td>";
?>
<td>
<form id="delete" method="post" action="deletePlayers.php">
<input type="hidden" name="id_Player" value="<?= $id_Player ?>"/>
<input type="submit" value="Delete!"/>
</form>
</td>
</tr>
推荐阅读
- postgresql - SequelizeForeignKeyConstraintError: insert or update on table ... 违反外键约束 \..._id_fkey\"
- java - 如何使用 java 代理和字节伙伴在 MethodDelegation 之后调用原始方法?
- php - 同一个 PHP 文件中有两个相同的 json 对象时出错
- java - 如何根据索引轮换句子中的每个单词?
- javascript - How to implement dual display in a Django app
- c# - Azure JSON 响应反序列化 C#
- python - django ImproperlyConfigured: 分割settings.py后SECRET_KEY设置不能为空
- javascript - 不会打印名字请帮忙
- sql-server - SQL Server RANK() start with 1
- xcode - 在 Xcode 中打开目录树