【已解決】PHP項目需求:使用者購買商品時,給上級發送一條通知(無限級下級會員)

來源:互聯網
上載者:User
無限級的過程

上下級會員關係通過id和pid確定。

例如:a>b>c>d>e>f>g...

就是a的下級是b,b的下級是c,c的下級是d....(有點類似傳*銷模式?無視掉)

需求,通過使用者g查出所有的上級,則要查到f.e.d.c.b.a這些使用者id

方可給這些上級發送通知。

我們最重要的是取出上級id然後就好辦多了。

首先說明幾個值,user_id 為使用者表中的使用者id,parent_id為表中使用者的上級id。

樣本一條基本的查詢父級idSQL。

SELECT parent_id FROM cx_user WHERE user_id = 10;##查詢user_id為10的上級id

不說廢話了,直接進入中心。

開啟MySQL開始寫預存程序。

DROP PROCEDURE IF EXISTS `getpid`;CREATE DEFINER = `root`@`localhost` PROCEDURE `getpid`(IN `id` int)BEGINSET @pid:=id;#id為查詢的參數 即目前使用者idSET @pidarr:=''; #查詢到的上級數組字串recursion:WHILE @pid!=0 DO  SELECT parent_id INTO @pid from cx_users WHERE user_id = @pid;#這裡是你查詢的SQL語句 @pid是動態id      IF @pid=0 THEN #到0即結束         LEAVE recursion;      END IF;      IF LOCATE(@pid,@pidarr)>0 THEN #防止出現上下級關係混亂         LEAVE recursion;      END IF;  set @pidarr = concat(@pidarr,@pid);  set @pidarr = concat(@pidarr,',');END WHILE recursion;SELECT @pidarr AS pidarr;END;

預存程序執行結果,拿圖嚇唬嚇唬你。

PHP端demo

$sql = "CALL getpid(104);";$pidstr = mysql_query($sql);//換成你項目中執行MySQL的函數即可 然後取出 pidarr的值到$pidstr$pidstr = rtrim($pidstr,',');//剔除最右側多餘英文逗號$pidarr = explode(',',$pidstr);//到數組//以下隨意 #ncSJI$@CO3N#@329090*(@@()$u)@j(@(h(@jn9NCD9823N892
  • 聯繫我們

    該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

    如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

    A Free Trial That Lets You Build Big!

    Start building with 50+ products and up to 12 months usage for Elastic Compute Service

    • Sales Support

      1 on 1 presale consultation

    • After-Sales Support

      24/7 Technical Support 6 Free Tickets per Quarter Faster Response

    • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.