我目前正在使用餐饮系统。
我是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;
}
}
答案 0 :(得分:2)
您正在使用错误的查询执行delete语句。代替保存查询语句的$ query,您应该执行以下操作:
$delData = $this->db->delete($delquery);
答案 1 :(得分:1)
我不知道您使用的是什么框架(看起来像CodeIgniter左右),但是很显然您正在尝试运行错误的查询。 试试:
$delData = $this->db->query($delQuery)
代替
$delData = $this->db->delete($query)
答案 2 :(得分:-1)
我假设您正在使用某些类或框架来管理SQL查询以使用选择和删除方法。
只需更改查询变量名称: $ delData = $ this-> db-> delete( $ query );
至: $ delData = $ this-> db-> delete( $ delquery );
答案 3 :(得分:-2)
MySQLi中没有->删除功能。您将只使用
$this->db->query($query);
SQL中的每个命令都在该行中。对SQL对象的调用仅是内部数据库的代理。 SQL的命令库是内部的。因此,我们现在在连接后仅使用变量即对象,然后删除查询本身带来的记录。