记录无法在PHP中删除

时间:2019-10-04 15:23:47

标签: php mysql

我目前正在使用餐饮系统。

我是PHP的初学者。我从数据库中删除记录时遇到了一些问题,当我尝试删除记录时,它取消了图像的链接,但没有删除该行。我该如何解决?

任何帮助将不胜感激。谢谢。

这是我的剧本::

productlist.php

<?php
    $pd = new Product();
    $fm = new Format();
    if($_SERVER['REQUEST_METHOD'] == 'POST' && isset($_POST['submit'])){
        $insertProduct = $pd->productInsert($_POST,$_FILES);
    }
    if(isset($_GET['delpro'])){
        $id = $_GET['delpro'];
        $delpro = $pd->delProById($id);
    }
?>
<div class="grid_10">
    <div class="box round first grid">
        <h2>Post List</h2>
        <div class="block">  
            <table class="data display datatable" id="example">
            <tbody>
            <?php
                $getPd = $pd->getAllProduct();
                if($getPd){
                    $i = 0;
                    while($result = $getPd->fetch_assoc()){
                       $i++;
            ?>
                <tr class="odd gradeX">
                    <td><?php echo $i;?></td>
                    <td><?php echo $result['productName'];?></td>
                    <td><?php echo $result['catName'];?></td>
                    <td><?php echo $result['brandName'];?></td>
                    <td><?php echo $fm->textShorten($result['body'],50);?></td>
                    <td><?php echo $result['price'];?></td>
                    <td><img src="<?php echo $result['image']; ?>" height="40px" width="60px"/></td>
                    <td>
                    <?php 
                        if($result['type'] == 0){
                            echo "Featured";
                        } else{
                            echo "General";
                        }

                    ?></td>
                    <td><a href="productedit.php?proid=<?php echo $result['productId'];?>">Edit</a> || <a onclick="return confirm('Are you sure to delete!')" href="?delpro=<?php echo $result['productId'];?>">Delete</a></td>
                </tr>
                <?php
                        }
                    }
                ?>
            </tbody>
        </table>

       </div>
    </div>
</div>

Product.php

public function delProById($id){
            $query = "SELECT * FROM tbl_product WHERE productId = '$id'";
            $getData = $this->db->select($query);
            if($getData){
                while($delImg = $getData->fetch_assoc()){
                    $dellink = $delImg['image']; 
                    unlink($dellink);

                }
            }


            $delquery = "DELETE FROM tbl_product WHERE productId = '$id'";
            $delData = $this->db->delete($query);
            if($delData){
                $msg = "<span class='success'>Product Deleted Successfully</span>";

                return $msg;
            }
            else {
                $msg = "<span class='error'>Product Not Deleted.</span>";
                return $msg;
            }


        }

4 个答案:

答案 0 :(得分:2)

您正在使用错误的查询执行delete语句。代替保存查询语句的$ query,您应该执行以下操作:

        $delData = $this->db->delete($delquery);

答案 1 :(得分:1)

我不知道您使用的是什么框架(看起来像CodeIgniter左右),但是很显然您正在尝试运行错误的查询。 试试:

$delData = $this->db->query($delQuery)

代替

$delData = $this->db->delete($query)

如果PHP框架确实是CodeIgniter(或任何框架),则强烈建议不要在PHP中运行原始sql。 请参阅:enter image description here

答案 2 :(得分:-1)

我假设您正在使用某些类或框架来管理SQL查询以使用选择和删除方法。

只需更改查询变量名称: $ delData = $ this-> db-> delete( $ query );

至: $ delData = $ this-> db-> delete( $ delquery );

答案 3 :(得分:-2)

MySQLi中没有->删除功能。您将只使用

$this->db->query($query);

SQL中的每个命令都在该行中。对SQL对象的调用仅是内部数据库的代理。 SQL的命令库是内部的。因此,我们现在在连接后仅使用变量即对象,然后删除查询本身带来的记录。