代码之家  ›  专栏  ›  技术社区  ›  Limpuls

该行在MySQL中不会被删除,PHP不会返回任何错误

  •  0
  • Limpuls  · 技术社区  · 5 年前

    '<a href="remove.php?='.$Fvalue.'">' 被解释为

    删除.php?=1

    例如,其中1是行的主id。

    编辑:

    带有“删除”按钮的产品表的呈现HTML:

        <!-- Products table -->
    
        <table class="table">
            <thead>
            <tr>
                <th scope='col'>id </br ></th><th scope='col'>name </br ></th><th scope='col'>price </br ></th><th scope='col'>amount </br ></th><th scope='col'>category_name </br ></th>    </tr>
            </thead>
            <tbody>
    
            <tr><td data-id="1"><a href="remove.php?remove_id=1"> REMOVE</a></td>
    <td>iPhone 7</td>
    <td>800</td>
    <td>15</td>
    <td>Smartphones</td>
    </tr><tr>
    <td data-id="42"><a href="remove.php?remove_id=42"> REMOVE</a></td>
    <td>Motorola </td>
    <td>3000</td>
    <td>5</td>
    <td>Smartphones</td>
    </tr><tr><td data-id="2"><a href="remove.php?remove_id=2"> REMOVE</a></td><td>Macbook Pro 2015</td>
    <td>1300</td><td>10</td>
    <td>Computers</td></tr><tr><td data-id="4"><a href="remove.php?remove_id=4"> REMOVE</a></td>
    <td>Dell XPS</td>
    <td>1400</td>
    <td>6</td><td>Computers</td>
    </tr><tr><td data-id="41"><a href="remove.php?remove_id=41"> REMOVE</a></td>
    <td>CHROMEBOOK</td>
    <td>5600</td>
    <td>8</td>
    <td>Computers</td></tr></tbody>
    

    更新的PHP:

     <?php
        foreach ($newArray as $value) {
            echo '<tr>';
            foreach ($value as $key => $Fvalue) {
    
                $remove = $value['id'] = " REMOVE";
                if($value[$key] == $value['id']) {
                    echo '<td data-id="'.$Fvalue.'">' . '<a href="remove.php?remove_id='.$Fvalue.'">' . $remove . '</a>' . '</td>';  // will show all values.
                } else {
                    echo '<td>' . $Fvalue . '</td>';
                }
            }
            echo '</tr>';
        }
        ?>
    

    <?php
    require_once ("navigation.php");
    require_once("database_connection.php");
    $id = !empty($_GET['remove_id']) ? $_GET['remove_id'] : null;
    if($id != null) {
        $deleteProducts = "DELETE FROM `products` WHERE `id` = '.$id.'";
        mysqli_query($dbc, $deleteProducts);
    }
    

    寻找任何帮助我发现任何问题,因为我没有得到错误,也不知道为什么代码不删除表中的一行。谢谢。

    2 回复  |  直到 5 年前
        1
  •  3
  •   GrumpyCrouton    5 年前

    必须传递一个与要发送的值相关联的键;

    <a href="remove.php?remove_id='.$Fvalue.'">' . $remove . '</a>
    

    注意 remove_id 部分。

    现在,在PHP中,您可以检索这个值;

    $id = !empty($_GET['remove_id']) ? $_GET['remove_id'] : null;
    if($id !== null) {
        $deleteProducts = "DELETE FROM `products` WHERE `id`='{$id}'";
        mysqli_query($dbc, $deleteProducts);
    }
    

    在我的代码中,我还修复了代码中的一个问题。你有 $id = (isset($_GET['$Fvalue'])); $id true false

    还可以使用双引号而不是单引号来清理HTML变量。

    if($value[$key] == $value['id']) {
        echo "<td data-id='{$Fvalue}'><a href='remove.php?remove_id={$Fvalue}'>{$remove}</a></td>";  // will show all values.
    } else {
        echo "<td>{$Fvalue}</td>";
    }
    

    大音符 : Little Bobby you may be at risk for SQL Injection Attacks Prepared Statements 具有 parameterized queries

        2
  •  0
  •   DigiLive    5 年前

    使用get方法,您的url中需要键值对。

    remove.php?id=1
    

    其中id是键,1是值。