php
  • html
  • mysql
  • mysqli
  • 2014-09-25 66 views 1 likes 
    1

    我想从表中删除一个产品,但它不起作用。 脚本是否错误?我该如何纠正它?为什么mymysqli删除按钮不起作用?

    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的错误。为什么会发生这种情况,我如何解决这个问题?

    回答

    2

    望着隐藏的价值,似乎它不是在标记正确写入:

    <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> 
    
    +0

    尝试过但它不起作用。顺便说一下, – 2014-09-25 08:15:39

    +1

    @jhonalynnequin,这是在'

    '标签里面吗? – Ghost 2014-09-25 08:16:32

    +0

    是的,它是在标签 – 2014-09-25 08:23:40

    0

    只是纠正你的输入隐藏字段:

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

    尝试过,但它不起作用。 – 2014-09-25 08:25:29

    0

    尝试

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

    然后尝试执行sql或修改

    "DELETE FROM products WHERE name='".$_POST[hidden]."'" 
    
    相关问题