首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在mysql中是否需要先选择再删除?:

在mysql中是否需要先选择再删除?:
EN

Stack Overflow用户
提问于 2018-01-14 00:57:10
回答 2查看 331关注 0票数 0

在我的网站管理页面中,我可以删除网上商店的产品,用下面的php代码。(Ajax将此文件称为php文件)。

我的问题是,我需要选择并检查num行,还是删除它,只保留并运行delete查询?

代码语言:javascript
运行
复制
    <?php
include_once("../../files/connect.php");
if($_POST)
{
    $id = mysqli_real_escape_string($kapcs, $_POST['id']);
    $check = mysqli_query($kapcs, "SELECT termek_id, termek_thumb, termek_big FROM termek WHERE termek_id='$id' LIMIT 1");
    if(mysqli_num_rows($check) > 0 )
    {


        /*Galéria törlése, ha van*/
        $check_gallery = mysqli_query($kapcs, "SELECT * FROM gallery WHERE gallery_termek_id = '$id'");
        if(mysqli_num_rows($check_gallery) > 0 )
        {
            while($gall = mysqli_fetch_assoc($check_gallery))
            {
                $DestinationDirectory = "../../images/gallery/";
                if(file_exists($DestinationDirectory.$gall['gallery_thumb']))
                {
                    unlink($DestinationDirectory . $gall['gallery_thumb']); 
                }
                if(file_exists($DestinationDirectory.$gall['gallery_big']))
                {
                    unlink($DestinationDirectory . $gall['gallery_big']);   
                }
                mysqli_query($kapcs, "DELETE FROM gallery WHERE gallery_termek_id = '$id'") or die(mysqli_error($kapcs));
            }
        }

        /* Címkék törlése, ha van */
        $check_cimke = mysqli_query($kapcs, "SELECT termek_cimke_termek_id FROM termek_cimke WHERE termek_cimke_termek_id = '$id'");
        if(mysqli_num_rows($check_cimke) > 0 )
        {   
            mysqli_query($kapcs, "DELETE FROM termek_cimke WHERE termek_cimke_termek_id = '$id'");
        }



        mysqli_query($kapcs, "DELETE FROM hir_termek_kapcsolo WHERE hir_termek_kapcs_termek = '$id' ") or die("Delete error 2 - " . mysqli_error($kapcs));


        $del = mysqli_query($kapcs, "DELETE FROM termek WHERE termek_id = '$id'");
        if($del)
        {
            echo 'Delete ok';
        }
        else
        {
            echo 'Delete error;
        }
    }
    else
    {
        echo 'Nincs ilyen azonosítójú termék.';
    }
}
?>
EN

回答 2

Stack Overflow用户

发布于 2018-01-14 01:07:12

在删除任何行之前,不需要选择任何内容。只需使用与选择行相同的条件。

运行delete查询,您可以检查受影响的行数,以查看是否删除了任何内容,如果删除,有多少行。此函数返回DELETE查询的已删除行数的整数。

代码语言:javascript
运行
复制
mysqli_query($kapcs, "DELETE FROM hir_termek_kapcsolo WHERE hir_termek_kapcs_termek = '$id' ") or die("Delete error 2 - " . mysqli_error($kapcs));
echo mysqli_affected_rows($kapcs)." rows deleted";

  • http://php.net/manual/en/mysqli.affected-rows.php

警告

您已经在使用支持带有有界变量输入的预准备语句的应用程序接口,您应该使用带占位符的参数化查询(预准备语句)来保护您的数据库免受SQL-injection攻击!开始使用mysqli::prepare()mysqli_stmt::bind_param()

票数 2
EN

Stack Overflow用户

发布于 2018-01-14 00:58:39

delete之前,您不需要执行select

如果没有与条件匹配的行,则delete不会删除任何行。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48242142

复制
相关文章

相似问题

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