如何在下面的示例中删除数据库行?

Posted

技术标签:

【中文标题】如何在下面的示例中删除数据库行?【英文标题】:how to delete database row in example below? 【发布时间】:2012-05-22 06:06:43 【问题描述】:

我有一个取消按钮,用户可以在其中取消文件上传,它会显示取消消息。现在我还想发生的是,当用户单击“取消”按钮时,它将在数据库中查找已取消的文件名并删除数据库行。问题是它根本没有删除数据库行。我怎样才能做到这一点。目前我正在使用 jpuery.ajax 方法,您可以在下面的代码中看到。

下面是表格代码:

var $fileImage = $("<form action='imageupload.php' method='post' enctype='multipart/form-data' target='upload_target' onsubmit='return imageClickHandler(this);' class='imageuploadform' >" + 

 "Image File: <input name='fileImage' type='file' class='fileImage' /></label><br/><br/><label class='imagelbl'>" + 

 "<input type='submit' name='submitImageBtn' class='sbtnimage' value='Upload' /></label>" + 

 "</p><p class='imagef1_cancel' align='center'><label>" + 

 "<input type='button' name='imageCancel' class='imageCancel' cancel_image_file_name='" + imagefilename + "' value='Cancel' /></label></form>"); 

下面是取消按钮功能:

    $('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) 

        var cancel_image_file_name = $(this).attr('cancel_image_file_name');

    jQuery.ajax("cancelimage.php?imagefilename=" + cancel_image_file_name)

    return stopImageUpload(2, cancel_image_file_name);

);

最后是 jquery.ajax 导航到的 cancelimage.php 脚本,据说可以删除包含文件名的数据库行:

 <?php

...

    //I have connected to database

    $cancel_image_file_name = $_GET["imagefilename"];

            $imagecancelsql = "DELETE FROM Image 
            WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($cancel_image_file_name)."'";

        mysql_query($imagecancelsql);

        mysql_close();


    ?>

更新:

以下是我回显删除查询时当前显示的内容:

注意:未定义的索引:第 19 行 /web/stud/xxx/.../cancelimage.php 中的图像文件名 从图像中删除 ImageFile = 'ImageFiles/'

以下是删除函数的代码,当按下删除按钮时,它将导航到 deleteimage.php 脚本并删除数据库行:

function stopImageUpload(success, imagefilename)

         $('.listImage').eq(window.lastUploadImageIndex).append('<div>' + htmlEncode(imagefilename) + '<button type="button" class="deletefileimage" image_file_name="' + imagefilename + '">Remove</button><br/><hr/></div>'); 

$('.listImage').eq(window.lastUploadImageIndex).find(".deletefileimage").on("click", function(event) 
    var image_file_name = $(this).attr('image_file_name');

    jQuery.ajax("deleteimage.php?imagefilename=" + image_file_name)

    $(this).parent().remove();
);

      return true;   

下面是deleteimage.php脚本:

<?php

//connected to DB

  $image_file_name = $_GET["imagefilename"];

        $imagedeletesql = "DELETE FROM Image 
        WHERE ImageFile = 'ImageFiles/". mysql_real_escape_string($image_file_name)."'";

    mysql_query($imagedeletesql);

    mysql_close();


?>

下面是取消按钮功能的更新:

function startImageUpload(imageuploadform, imagefilename)
            $('.imagef1_cancel').eq(window.lastUploadImageIndex).find(".imageCancel").on("click", function(event) 

var cancel_image_file_name_ = $(this).attr('css');
var cancel_image_file_name = '';
var style_array = cancel_image_file_name_.split(" ");
for(i=0;i<style_array.length;i++)
    if(style_array[i].substr(0,2) == "__")
     cancel_image_file_name = style_array[i].slice(2,style_array[i].length-2);




    jQuery.ajax("cancelimage.php?imagefilename=" + cancel_image_file_name)

    return stopImageUpload(2, cancel_image_file_name);

);       
      return true;

我将按钮输入标记更改为取消按钮:

<input type='button' name='imageCancel' class='imageCancel __"+ imagefilename + "' value='Cancel' />

【问题讨论】:

您有任何错误吗?您是否尝试过输出生成的查询,然后尝试手动执行该查询? @SurrealDreams 我没有收到任何错误。我认为问题可能是它没有找到或检索文件名,所以当它搜索删除正确的行时,它找不到文件名,但我不确定。 尝试回显查询,看看是否有意义 - 然后尝试手动运行。 当我回显查询并在浏览器上打开 php 脚本时,它在更新中显示了上述内容,这似乎很有意义,但也指出图像文件名未定义。当我上传并取消文件上传并刷新cancelimage.php脚本时,它显示的是同样的东西。 可以把它移到聊天室吗? 【参考方案1】:

试试这些改变:

在表格上:

<input type='button' name='imageCancel' class='imageCancel __"+ imagefilename + "' value='Cancel' /></label></form>

关于取消按钮功能:

var cancel_image_file_name_ = $(this).attr('class');
var cancel_image_file_name = '';
var style_array = cancel_image_file_name_.split(" ");
for(i=0;i<style_array.length;i++)
    if(style_array[i].substr(0,2) == "__")
     cancel_image_file_name = style_array[i].slice(2,style_array[i].length);



【讨论】:

当您说将此代码放在脚本上时,您是指cancelimage.php 脚本吗?只是确定? 没有。我的意思是,取消按钮功能。用我建议的代码替换codevar cancel_image_file_name = $(this).attr('cancel_image_file_name');code 我尝试了你的方法,但它指出 cancel_image_file_name 是未定义的,它指向行:var style_array = cancel_image_file_name_.split(" "); 我在想我的代码必须有办法检索文件名称,无需进行拆分、样式等。如果您查看我创建删除按钮功能的方式以及如何检索名称,那么取消按钮必须有类似的方法。我认为我需要做的地方只需要稍作改动 对不起,我输入了错误的变量名。我已经编辑和更正了。请再试一次。 我试过你编辑,但它在同一行给我同样的错误:var style_array = cancel_image_file_name_.split(" ");。我将在问题底部更新当前代码的外观。

以上是关于如何在下面的示例中删除数据库行?的主要内容,如果未能解决你的问题,请参考以下文章

如何从游标中获取、删除、提交

使用合并时删除某些行

使用python计算文件中删除行数的最佳方法

如何从输出中删除括号?

如何根据上面的行删除行?蟒蛇熊猫

请教一个批量删除文本文件中多余回车或提取文本中前两行数据的shell脚本,请高手指点,万分感谢