首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用ajax和php删除行

问使用ajax和php删除行
EN

Stack Overflow用户
提问于 2016-08-14 03:11:28
回答 2查看 44关注 0票数 0

这是从sql表中删除所有选定行的好方法吗?

代码运行得很好,但也许还有其他或更好的方法来做到这一点。在real_查询之前,escape_string函数处于合适的位置,或者我应该放在foreach循环中。

代码语言:javascript
复制
$('.deleteRows').click(function(e)
{
    e.preventDefault();
    var val = [];
    if(confirm("Biztos, hogy törölni szeretné a kijelölt sorokat?"))
    {
        $(':checkbox:checked').each(function(i){
          val[i] = $(this).val();
        });
        $.ajax({
            data: { val:val },
            type: 'POST',
            url: 'files/delete_all_uzenet.php',
            success: function(data) 
            {
                var result = $.trim(data);
                $('#newsletterResult').html(data);
                $('#newsletterModal').modal('show');
            },
            complete: function()
            {
                setTimeout(function() 
                {
                    location.reload();  
                }, 4000 );  
            }
        });
    }
    return false;
});

Php文件:

代码语言:javascript
复制
<?php
include_once("../../files/connect.php");
if(isset($_POST['val']))
{
    foreach($_POST['val'] as $v)
    {
        mysqli_query($kapcs, $sql = "DELETE FROM kapcsolatfelvetel WHERE kapcsolat_id = '".mysqli_real_escape_string($kapcs, $v)."'") or die(mysqli_error($kapcs));
    }
    echo 'Rows deleted';
}
else
{
    exit("No rows selected.");
}
?>
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-08-14 03:21:10

如果将所有操作合并到一个查询中,代码的执行速度会快得多。一旦您验证了您有要删除的值,请执行以下操作:

代码语言:javascript
复制
$p = &$_POST['val']; //$p refers to $_POST['val'];

//clean all inputs
foreach($p as &$v) $v = "'". mysqli_escape_string($kapcs,$v) ."'";

//transform to "('value1', 'value2'...)"
$values = '('.implode(',',$p).')';

//build one sql to delete all rows
$sql = "DELETE FROM kapcsolatfelvetel WHERE kapcsolat_id IN $values";

然后,您可以运行该查询以一次删除所有行。

PS:使用字符串转义来清理字符串;这总比没有好得多,但不如准备好的语句和参数化查询好。

PPS:您还应该检查您的查询是否成功执行。假设仅仅因为调用了mysqli_query,就删除了这些行,这是错误的。

票数 2
EN

Stack Overflow用户

发布于 2016-08-14 18:38:49

@甲壳虫果汁

所以,这是正确的方式吗?

代码语言:javascript
复制
    <?php
include_once("../../files/connect.php");
if(isset($_POST['val']))
{
    $p = &$_POST['val'];
    foreach($p as &$v)
    {
        $v = "'". mysqli_escape_string($kapcs, $v) ."'";
    }
    $values = '('.implode(',',$p).')';

    mysqli_query($kapcs, $sql = "DELETE FROM kapcsolatfelvetel WHERE kapcsolat_id IN $values") or die(mysqli_error($kapcs));
    echo 'Rows deleted ok.';
}
else
{
    exit("No rows selected.");
}
?>
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/38936101

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档