多表查詢並將查詢結果合并為一個多維陣列

來源:互聯網
上載者:User

標籤:失敗   密碼   關聯   串連資料庫   日本   發送   多表查詢   世界盃   影響   

表cms_top:

  id                   name

  1      國際新聞

  2      國內新聞

表cms_category:

  id      name      tid(串連上級)

  1      國際娛樂新聞   1

  2      國際體育新聞   1

  3      國際時政新聞   1

  4      國內娛樂新聞   2

  5      國內體育新聞   2

表cms_article:

  id    title    ptime    source    click    content    uid(串連cms_user中的ID)    cid(串連上級)    tuijian

 

要將查詢內容合并為如下形式的多維陣列,之後直接從該多維陣列中遍曆取得資料:

 

方法:

/*檔案 sql_config.inc.php*/<?php    //資料庫地址    define(‘DB_HOST‘, ‘‘);    //資料庫的使用者名稱    define(‘DB_USER‘, ‘‘);    //資料庫密碼    define(‘DB_PASS‘, ‘‘);    //資料庫的字元集    define(‘DB_CHARSET‘, ‘utf8‘);    //資料庫的名稱    define(‘DB_NAME‘, ‘‘);    //資料表的首碼    define(‘DB_PREFIX‘, ‘cms_‘);?>/*檔案 connect_sql.func.php*/<?phperror_reporting(0);function connect_sql($sql){    //1、串連資料庫伺服器    //mysql_pconnect持久串連,不推薦使用    @$link=mysql_connect(DB_HOST,DB_USER,DB_PASS);        //2、判斷是否串連成功    if (!$link){        echo "資料庫伺服器串連失敗,錯誤資訊為:".mysql_error().",錯誤號碼為:".mysql_errno();        return false;    }        //3、設定用戶端字元集    //mysql_query("set names utf8");    mysql_set_charset(DB_CHARSET);        //4、選擇資料庫    mysql_select_db(DB_NAME,$link);        //5、準備sql語句          //6、發送sql語句    $res=mysql_query($sql);        //7、處理結果    if (is_resource($res)){        //若$sql為查詢語句則$res應當返回為結果集資源,需要解析        while ($row=mysql_fetch_assoc($res)){            $data[]=$row;        }        mysql_free_result($res);        mysql_close();        return $data;//注意:這裡返回的$data為二維數組    }else{        //若$sql為增、刪、改則判斷其受影響行數        if ($res){            $rows=mysql_affected_rows();            mysql_close();            return $rows;        }else{            echo mysql_error();            mysql_close();            return false;        }    }}?><?phpinclude ‘../config/sql_config.inc.php‘;include ‘../common/connect_sql.func.php‘;//將頂級分類、二級分類和文章表關聯組成多維陣列$sql01="select id,name from ".DB_PREFIX."top";$tops=connect_sql($sql01);foreach ($tops as &$val01){  //加&,遍曆數組索引值的同時添加‘cates‘=>array()元素    $sql02="select id,name from ".DB_PREFIX."category where tid=".$val01[‘id‘];    $cates=connect_sql($sql02);    $val01[‘cates‘]=$cates;        foreach ($val01[‘cates‘] as &$val02){        $sql03="select id,title,ptime from ".DB_PREFIX."article where cid=".$val02[‘id‘];        $arts=connect_sql($sql03);        $val02[‘arts‘]=$arts;    }}var_dump($tops);?>

結果為:

array(2) {  [0]=>  array(3) {    ["id"]=>    string(1) "1"    ["name"]=>    string(12) "國際新聞"    ["cates"]=>    array(3) {      [0]=>      array(3) {        ["id"]=>        string(1) "1"        ["name"]=>        string(18) "國際娛樂新聞"        ["arts"]=>        array(1) {          [0]=>          array(3) {            ["id"]=>            string(1) "1"            ["title"]=>            string(54) "超甜!英國小哥黴黴演唱會上向女友求婚"            ["ptime"]=>            string(10) "1530235016"          }        }      }      [1]=>      array(3) {        ["id"]=>        string(1) "2"        ["name"]=>        string(18) "國際體育新聞"        ["arts"]=>        array(2) {          [0]=>          array(3) {            ["id"]=>            string(1) "2"            ["title"]=>            string(53) "英格蘭丟單刀獲第2 比利時全勝將戰日本"            ["ptime"]=>            string(10) "1530235177"          }          [1]=>          array(3) {            ["id"]=>            string(1) "6"            ["title"]=>            string(51) "2018年世界盃,荷蘭、意大利未進入32強"            ["ptime"]=>            string(10) "1530261159"          }        }      }      [2]=>      array(3) {        ["id"]=>        string(1) "3"        ["name"]=>        string(18) "國際時政新聞"        ["arts"]=>        array(1) {          [0]=>          array(3) {            ["id"]=>            string(1) "3"            ["title"]=>            string(65) "環球時報社評:美要世界不買伊朗石油 中國怎麼辦"            ["ptime"]=>            string(10) "1530235270"          }        }      }    }  }  [1]=>  &array(3) {    ["id"]=>    string(1) "2"    ["name"]=>    string(12) "國內新聞"    ["cates"]=>    array(2) {      [0]=>      array(3) {        ["id"]=>        string(1) "4"        ["name"]=>        string(18) "國內娛樂新聞"        ["arts"]=>        array(2) {          [0]=>          array(3) {            ["id"]=>            string(1) "4"            ["title"]=>            string(36) "陳奕迅赴俄羅斯觀看世界盃"            ["ptime"]=>            string(10) "1530235474"          }          [1]=>          array(3) {            ["id"]=>            string(1) "7"            ["title"]=>            string(77) "倪妮baby牽手蕩鞦韆畫面文藝唯美 兩人燦笑開心的像個孩子"            ["ptime"]=>            string(10) "1530414358"          }        }      }      [1]=>      &array(3) {        ["id"]=>        string(1) "5"        ["name"]=>        string(18) "國內體育新聞"        ["arts"]=>        array(1) {          [0]=>          array(3) {            ["id"]=>            string(1) "5"            ["title"]=>            string(63) "姚明在場下目睹這一幕:中國內線竟被韓國打爆"            ["ptime"]=>            string(10) "1530235548"          }        }      }    }  }}

 

多表查詢並將查詢結果合并為一個多維陣列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.