php
  • html
  • mysql
  • mysqli
  • 2014-09-25 65 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]."'" 
    
    相關問題