douli8040 2011-12-14 10:45
浏览 124
已采纳

从数据库表创建多维数组

I have a mysql table which contains is:

folder_id (int(11), auto increment) 
folder_name (varchar) 
folder_class(varchar) 
folder_link (varchar)

What I want to do is somehow loop through the table and store each row like this:

$packs = array( array(  'Name'  => 'DarkUIPack', 
                    'Class' => 'ui',
                    'Link'  => 'http://graphicriver.net/item/dark-minimalist-ui-pack/662762' 
                ),
            array(  'Name'  => 'MinimalistIcons', 
                    'Class' => 'min',
                    'Link'  => 'http://graphicriver.net/item/small-minimalist-icons-pack/670469'
                ),
            array(  'Name'  => 'BlueMediaIcons', 
                    'Class' => 'blue',
                    'Link'  => 'http://graphicriver.net/item/blue-media-icons-set/705319'
                ),
            array(  'Name'  => 'MediaIcons', 
                    'Class' => 'med',
                    'Link'  => 'http://graphicriver.net/item/media-icons-set/679835'
                ),
            array(  'Name'  => 'ToTheTopButtons', 
                    'Class' => 'top',
                    'Link'  => 'http://graphicriver.net/item/to-the-top-buttons/673221'
                ),
            array(  'Name'  => 'Sunglasses', 
                    'Class' => 'sun',
                    'Link'  => ''
                ),
            array(  'Name'  => 'RealEstate', 
                    'Class' => 'est',
                    'Link'  => 'http://graphicriver.net/item/simple-real-estate-logo/724697'
                ),
            array(  'Name'  => 'PhotoStudio', 
                    'Class' => 'std',
                    'Link'  => 'http://graphicriver.net/item/photo-studio-logo/724694'
                ),
            array(  'Name'  => 'PayDayCity', 
                    'Class' => 'std',
                    'Link'  => ''
                ),
            array(  'Name'  => 'MoleculeCorp', 
                    'Class' => 'mol',
                    'Link'  => 'http://graphicriver.net/item/molecule-corp-logo/719307'
                ),
            array(  'Name'  => 'ClubbGX', 
                    'Class' => 'gx',
                    'Link'  => ''
                ),
            array(  'Name'  => 'AerialVision', 
                    'Class' => 'aer',
                    'Link'  => ''
                ),
            array(  'Name'  => 'ServiceCompany', 
                    'Class' => 'ser',
                    'Link'  => 'http://graphicriver.net/item/service-company-logo/727091'
                ),
            array(  'Name'  => 'ElectroTech', 
                    'Class' => 'ele',
                    'Link'  => 'http://graphicriver.net/item/electro-tech-logo/720904'
                ),
            array(  'Name'  => 'CreativeStudio', 
                    'Class' => 'cre',
                    'Link'  => 'http://graphicriver.net/item/creative-studio-logo/719494'
                ),
            array(  'Name'  => 'NanoCorp', 
                    'Class' => 'nan',
                    'Link'  => 'http://graphicriver.net/item/nano-corp-logo/719098'
                ),
            array(  'Name'  => 'RehabPlace', 
                    'Class' => 'reh',
                    'Link'  => ''
                ),
            array(  'Name'  => 'MyLocalMix', 
                    'Class' => 'mix',
                    'Link'  => ''
                ),
            array(  'Name'  => 'SevenBySeven', 
                    'Class' => 'sev',
                    'Link'  => ''
                ),
            array(  'Name'  => 'ComingSoon', 
                    'Class' => 'com',
                    'Link'  => ''
                ),
            array(  'Name'  => 'AlienIcons', 
                    'Class' => 'aln',
                    'Link'  => 'http://graphicriver.net/item/alien-icons-set/698515'
                ),
            array(  'Name'  => 'PreloaderPortfolio', 
                    'Class' => 'pre',
                    'Link'  => ''
                ),
            array(  'Name'  => 'BioTech', 
                    'Class' => 'bio',
                    'Link'  => ''
                ),
            array(  'Name'  => 'ConstructionCompany', 
                    'Class' => 'con',
                    'Link'  => ''
                ),
            array(  'Name'  => 'EagleMedia', 
                    'Class' => 'egl',
                    'Link'  => ''
                ),
            array(  'Name'  => 'ElectronicWays', 
                    'Class' => 'elw',
                    'Link'  => ''
                ),
            array(  'Name'  => 'EnvironmentalCompany', 
                    'Class' => 'env',
                    'Link'  => ''
                ),
            array(  'Name'  => 'SecureData', 
                    'Class' => 'sec',
                    'Link'  => 'http://graphicriver.net/item/secure-data-company-logo/907334'
                ),
            array(  'Name'  => 'ConstructSimple', 
                    'Class' => 'cns',
                    'Link'  => 'http://graphicriver.net/item/simple-construction-company-logo/907538'
                ),
            array(  'Name'  => 'ConstructRoof', 
                    'Class' => 'cnr',
                    'Link'  => 'http://graphicriver.net/item/construction-company-logo/907549'
                )
        );  

where 'Name' corresponds to folder_name, 'Class' to folder_class and 'Link' to folder_link.

I'm using this within a class and the class looks like this till now:

class folder
{
private $connect;

public function __construct() {

    $this->connect = new mysqli(DB_HOST, DB_USER, DB_PASS, DB_NAME);

    if (mysqli_connect_errno()) {
        $error = true;
        $message['error'] = true;
        $message['message'] = mysqli_connect_error();
        return json_encode($message);
    }
        else {
            return true;    
        }

}

    public function crtFolder($fldName,$fldClass,$fldLink,$fldPath) {

    $fldName = preg_replace('/\s+/', '', $fldName);

    $fldPN = $fldPath."\\".$fldName;

    $modArray = array(array('1'));

    if ((!is_dir($fldPN))) {
        if(mkdir($fldPN,0777,true)) {

            $sql = "INSERT INTO folders (folder_name,folder_class,folder_link) VALUES (?, ?, ?)";

            if($stmt = $this->connect->prepare($sql)) {
                $stmt->bind_param("sss", $fldName, $fldClass, $fldLink);
                $stmt->execute();
                $stmt->close();
                $error = false;
                $message['error'] = false;
                $message['message'] = "Folder Created | Data Successfuly Inserted";
                return json_encode($message);
            }
                else {
                    $error = true;
                    $message['error'] = true;
                    $message['message'] = "Folder Created | Data Failed To Insert";
                    return json_encode($message);
                }
        }
            else { 
                $error = true;
                $message['error'] = true;
                $message['message'] = "Folder Failed To Create";
                return json_encode($message); 
            }
    }
        else {
            $error = true;
            $message['error'] = true;
            $message['message'] = "Folder Already Exists";
            return json_encode($message);   
        }
}

public function __destruct() {

    $closeConnection = $this->connect->close();

    if($closeConnection) {
        return true;
    }
}

}

I'm showing the class because I want to keep the same method for the creating the array as the other methods are created. Because I found something on Google, but it was making an array from multiple tables. I only have one table.

  • 写回答

3条回答 默认 最新

  • duan198409 2011-12-14 11:01
    关注

    Write below given function in to your class. Hope this will help things.

    public function getTableData(){
    
     $sql = "SELECT * FROM folders";
     if($stmt = $this->connect->prepare($sql)) {
    
         $stmt->execute();
         $stmt->close();
         $arrFinalArray = array();
         while ($arrFolder = $stmt->fetch()){
    
            $arrFinalArray[] = array(
                        'Name'  => $arrFolder['folder_name'], 
                        'Class' => $arrFolder['folder_class'],
                        'Link'  => $arrFolder['folder_link']
            );
    
    
         }
      }
    }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

悬赏问题

  • ¥15 请问这个是什么意思?
  • ¥15 STM32驱动继电器
  • ¥15 Windows server update services
  • ¥15 关于#c语言#的问题:我现在在做一个墨水屏设计,2.9英寸的小屏怎么换4.2英寸大屏
  • ¥15 模糊pid与pid仿真结果几乎一样
  • ¥15 java的GUI的运用
  • ¥15 我想付费需要AKM公司DSP开发资料及相关开发。
  • ¥15 怎么配置广告联盟瀑布流
  • ¥15 Rstudio 保存代码闪退
  • ¥20 win系统的PYQT程序生成的数据如何放入云服务器阿里云window版?