2013-07-09 88 views
0

我试图删除我的数据库中的特定字段(不是整行)。 但现在,它不会删除我的数据库中的任何东西。只删除特定字段的查询

当用户点击删除按钮,我想空场持有的图像的路径。

HTML部分:

<div class="delete_image"><a href="#" id="<?php echo $recipe_path ?>" 
class="delete_image">Remove!</a></div> 

AJAX部分:

$('.delete_image').on("click",function() 
{ 
var ID = $(this).attr("id"); 
var dataString = '$recipe_path='+ ID; 
if(confirm("Are you sure you want to delete this image ?")) 
    { 
    $.ajax({ 
    type: "POST", 
    url: "remove.php", 
    data: dataString, 
    cache: false, 
    }); 
} 
return false; 
}); 

PHP部分(remove.php):

<?php 
include "includes/db.php"; 

if ($_POST['recipe_path']) 
    { 
    $recipe_path = $_POST['recipe_path']; 
    $sql = query("DELETE FROM recipes WHERE $recipe_path = '$recipe_path' "); 
    } 
?> 

我做得不对的SQL查询?

+2

不使用DELETE,你想使用UPDATE并将其设置为空字符串。 DELETE只能删除整行 – 2013-07-09 21:06:01

+2

DELETE将删除整行。你说你不需要这个,所以你应该看看使用UPDATE,并将正确的字段设置为''''。 – andrewsi

回答

1

您dataString没有正确的序列化语法,这就是为什么代码不能正常工作,请尝试更改为此:

var dataString = 'recipe_path='+ ID; 

现在的更新代码,假设ID以上referes到配方路径,你需要这样做:

$sql = query("UPDATE recipes SET recipe_path = NULL WHERE recipe_path = '$recipe_path'"); 
2

不应该说是

$sql = query("DELETE FROM recipes WHERE recipe_path = '$recipe_path' "); 

为什么$recipe_path

此外,请确保在页面准备就绪后运行该功能。

$(function(){ 
    $('.delete_image').on("click",function() 
    { 
    var ID = $(this).attr("id"); 
    var dataString = '$recipe_path='+ ID; 
    if(confirm("Are you sure you want to delete this image ?")) 
     { 
     $.ajax({ 
     type: "POST", 
     url: "remove.php", 
     data: dataString, 
     cache: false, 
     }); 
    } 
    return false; 
    }); 
}); 

正如已经指出的那样,DELETE将删除整行。

+0

为什么downvote? –

+0

不是我,但你错误的观点,使用DELETE是错误的 – 2013-07-09 21:18:28

+0

@Dagon真的,谢谢你。帮助他的其余部分,没有注意到! –