【问题标题】:How to delete a row using a button in php using mysql如何使用 mysql 使用 php 中的按钮删除行
【发布时间】:2019-02-20 03:50:08
【问题描述】:

我在从表中删除行时遇到问题。当我单击“删除”按钮时,它确实将我带到了下一页,并显示“从播放器中删除了 0 行”。基本上,它执行正确,但我无法删除选定的行。我已经能够显示并添加到表格中。

Player.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>

deletePlayers.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>";}

【问题讨论】:

  • 作为一种干净的方法,请使用 一个表单 包含整个表格,多个提交按钮具有相同的name="delete" 和不同的value="&lt;?php echo "$id_Player"; ?&gt;" 只有实际按下的按钮才会只要它确实具有name 属性,就与表单一起提交。这样,您甚至可以使用复选框并一次删除多条记录。

标签: php mysql sql post button


【解决方案1】:

问题出在这行代码,

if(!($stmt->bind_param("s",$_POST['id_Player']))){}

这里$POST['id_player'] 的值是Delete!,因为您在HTML 代码中传递输入类型提交的名称,我认为您的数据库中没有任何等于Delete! 的ID。

解决方案

你需要做的是你需要使用一个隐藏的输入,它将像这样保存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>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 2013-05-30
    相关资源
    最近更新 更多