【问题标题】:why does mymysqli delete button doesn't work?为什么 mymysqli 删除按钮不起作用?
【发布时间】:2014-11-19 22:19:09
【问题描述】:

我试图从表中删除一个产品,但它不起作用。 剧本错了吗?我该如何纠正?

include_once('connection.php');
include_once('functions.php');      
if(isset($_POST['delete'])){
    mysqli_query( $conDB, "DELETE FROM products WHERE  name='$_POST[hidden]'");
};              
$page = (int)(!isset($_GET["page"]) ? 1 : $_GET["page"]);
if ($page <= 0) $page = 1;           
    $per_page = 10; // Set how many records do you want to display per page.             
$startpoint = ($page * $per_page) - $per_page;                  
$statement = "products ORDER BY id DESC";
$results = mysqli_query($conDB, "SELECT * FROM {$statement} LIMIT {$startpoint} , {$per_page}");    
if (mysqli_num_rows($results) != 0) {        
    while ($row = mysqli_fetch_array($results)) {
    $name = $row['name'];
?>
<tr>
    <td align="left" colspan='2' ><big style="color:red" ><b><?php echo $row['name']?></b></big><td>    
</tr>
<tr>
    <td align="left" colspan='2'><big style="color:333333"><b><?php echo $row['category']?></b> / <?php echo $row['subcategory']?></big></td>
</tr>   
<tr>    
    <td style="vertical-align:top" >
       <?php echo "<img border=3 width= 300px  height =250px src=\"products/"  . $row['picture']>?>"<br /> 
</td>
     <td  style="vertical-align:top">   
            <?php echo  nl2br($row['description'])?>
    </td>
</tr>
<tr>
    <td> <input type="hidden" name="hidden" value="$name" ><input type="submit" name="delete" onClick='return confirmDelete()' value='Delete Product'></td>         

当我删除“删除产品”时,确认将显示我是否将其删除。但确认后。它不会从表中删除选定的行。

确认后php没有显示错误。为什么会发生和 我该如何解决?

【问题讨论】:

    标签: php html mysql mysqli


    【解决方案1】:

    查看隐藏值,标记中似乎没有正确写入:

    <input type="hidden" name="hidden" value="$name" >
                                        <!--  ^ literal string, not a variable value -->
    

    应该是:

    <input type="hidden" name="hidden" value="<?php echo $name; ?>" />
    

    旁注:既然您已经在使用 mysqli,为什么不使用准备好的语句。

    if(isset($_POST['delete'])) {
        $delete = $_POST['delete'];
        $del = $conDB->prepare('DELETE FROM products WHERE name = ?');
        $del->bind_param('s', $delete);
        $del->execute();
    }
    

    我建议这样做,删除隐藏的输入并改用它:

    <button type="submit" name="delete" onClick='return confirmDelete()' value="<?php echo $row['id']; ?>">Delete Product</button>
    

    【讨论】:

    • @jhonalynnequin 顺便问一下,这是在 &lt;form&gt; 标签内吗?
    • @jhonalynnequin 查看我的修订,我只是更改了删除部分
    • 我做了,但没有删除。
    • @jhonalynnequin 没有错误?试试var_dump($_POST['delete']),看看有没有被抓到
    • 当我将 id 更改为 name 时它确实有效。我只是想办法让它工作。谢谢
    【解决方案2】:

    只需更正您的输入隐藏字段:

    <input type="hidden" name="hidden" value="<?php echo $name; ?>" >
    

    【讨论】:

      【解决方案3】:

      试试

      echo "DELETE FROM products WHERE  name='$_POST[hidden]'";
      

      然后尝试执行sql或者修改

      "DELETE FROM products WHERE  name='".$_POST[hidden]."'"
      

      【讨论】:

        猜你喜欢
        • 2020-06-29
        • 2014-05-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-11-27
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多