a亚洲精品_精品国产91乱码一区二区三区_亚洲精品在线免费观看视频_欧美日韩亚洲国产综合_久久久久久久久久久成人_在线区

首頁 > 編程 > PHP > 正文

PHP類初識,通用數據庫操作類,前端easyui-datagr

2020-03-24 18:56:55
字體:
來源:轉載
供稿:網友
  • 實現功能:

    左端datagrid顯示簡略信息,右側顯示選中行詳細信息,數據庫增刪改 (1)點擊選中行,右側顯示詳細信息,其中【新增】、【修改】、【刪除】按鈕可用,【保存】按鈕禁用 (2)點擊【新增】按鈕,【修改】,【刪除】按鈕禁用,【保存】按鈕啟用 (3)點擊【修改】按鈕,【新增】,【刪除】按鈕禁用 難點:通用數據庫操作類中insert方法跟update方法 前端功能不是很完善,按鈕之間邏輯還是有點問題,最后補充前端代碼 其中Formain.php對前端傳值判斷,并調用actSQL.html' target='_blank'>class.php獲得結果 代碼比較簡單 如下:
    <?php    require('include/mysql_connect/actSQL.class.php');    $key=$_REQUEST['key'];    $a=new actSQL('localhost','root','1234','tpss');    //獲取信息    if($key=='1')    {                        $a->getAllData('t_prekeychart');    }    if($key=='2')    {                    $objectstr=$_REQUEST['object'];                        if($a->insertData($objectstr,'t_prekeychart'))            {                    echo json_encode('true');            }else{                    echo json_encode('false');            }            //test            //$test='{'keychartid':'2','keyid':'2','keychartname':'2','level':'2','showtype':'2','helptips':'2','keylevel':'2','ishmap':'2'}';            //$a->insertData($test,'t_prekeychart');    }    if($key=='3')    {                    $prekey=$_REQUEST['keychartid'];            $prekeyname='keychartname';            if($a->delData($prekey,$prekeyname,'t_prekeychart'))            {                    echo json_encode('true');            }else{                    echo json_encode('false');            }    }    if($key=='4')    {            $objectstr=$_REQUEST['object'];            $prekeyname='keychartid';            if($a->updData($objectstr,$prekeyname,'t_prekeychart'))            {                    echo json_encode('true');            }else{                    echo json_encode('false');            }    }?>
    看Formain.php中出現的類的各個方法,簡單思考一下 其中 getAllData($tablename)獲取表格的所有信息,這個方法比較簡單,一個簡單的sql語句就可以搞定,最后將結果json格式返回即可 delData($prekey,$prekeyname,$tablename)刪除指定信息,這個更簡單,就不說了 insertData($objectstr,$tablename),其中$objectstr是json格式的字符串,$tablename表名, 難點是將拼湊成insert into $tablename (......) values(.....)這種語句 解決辦法: (1)根據$tablename獲取所有的列名,并將列名數組轉換為字符串,為最后sql語句的拼湊做準備,除此獲取列名還有個目的,往下看 (2)將json格式的字符串$objectstr轉換為關聯數組,調用json_decode()方法 補充json_decode()方法
    mixed json_decode ( string $json [, bool $assoc = false [, int $depth = 512 [, int $options = 0 ]]] )
    接受一個 JSON 格式的字符串并且把它轉換為 PHP 變量,其中assoc,當該參數為TRUE時,將返回關聯數組。 (3)按照查詢到的列名順序查詢數據,數據為空時,賦值為NULL,將結果存到數組,防止數據庫插入數值錯位(獲取列名的另個原因) (4)將(3)的結果轉化為字符串,調用implode()方法
    補充implode()方法:
    string implode(string glue, array pieces);
    函數將數組的內容組合成一個字符串,參數 glue 是字之間的分隔符號 (5)拼湊sql語句字符串,然后向數據庫插入 updData($objstr,$prekeyname,$tablename)方法難點也是在于sql語句的字符串拼湊,拼湊格式應該如下 update $tablename set ..... where $prekeyname=$data[$prekeyname] 前兩步同insertData() (3)遍歷列名字符數組,獲取非主鍵名的列名值,按照“列名=列名值”的字符串格式存入數組,這里就是set 后面部分的不完全字符串
    (4)將(3)結果轉換為字符串,將數組元素以','分隔開,這個就是set后面最后的字符串 格式為“xx=xx,xx=xx”
    (5)拼湊sql字符串,然后更新數據庫 insertData()以及updData()函數如下
     /*         * 添加信息         * @param:$objstr:json風格的數據庫插入信息字符串         *           $tablename:表名         */        function insertData($objstr,$tablename)        {                $dbc=$this->conData();                if($dbc)                {                        $columnname=array();                    $columnname=$this->getColumns($tablename);                    //echo $columnname[0];                    $clos=implode(',',$columnname); //將列名數組轉換為字符串                    //echo $clos;                    $data=json_decode($objstr,true); //將json格式的字符串轉換為關聯數組                    //echo $value['keychartname'];                    $values=array();                    foreach($columnname as $value)                    {                            //按照查詢到的列名查詢數據,數據為空的,賦值為NULL,防止數據庫插入數值錯位                            //echo $data[$value].'<br>';                            if(isset($data[$value]))                            {                                    array_push($values,$data[$value]);                            }else{                                $data[$value]=NULL;                                array_push($value,$data[$value]);                            }                    }                    $strvalue=implode(',',$values);                    //echo $strvalue;                    /*                    * SQL: insert into $tablename($clos) values(...)                    */                    $sql=<<<SQL                    insert into $tablename($clos) values($strvalue);SQL;                    //echo $sql;                    $res=mysqli_query($dbc,$sql);                    if($res)                    {                        return true;                    }else{                            return false;                    }                }else{                        echo '連接錯誤!';                }                }/*         *更新信息          *@param: $objstr:json風格的數據庫更新信息字符串         *           $tablename:表名         *           $prekeyname:主鍵名                  * */        function updData($objstr,$prekeyname,$tablename)        {                $dbc=$this->conData();                if($dbc)                {                    $columnname=array();                    $columnname=$this->getColumns($tablename);                            //$clos=implode(',',$columnname); //將列名數組轉換為字符串                    $data=json_decode($objstr,true); //將json格式的字符串轉換為關聯數組                    $sets=array();                    foreach($columnname as $value)                    {                                //列名不等于主鍵名獲取值                        if($prekeyname!=$value)                        {                                //set $value=$data[$value];                                array_push($sets,'$value=$data[$value]');//接好的set語句部分                        }                    }                    //$sets數組轉化為字符串                    $stringsets=implode(',',$sets);                    //echo $stringsets;                    /*                    * SQL:update $tablename set ..... where $prekeyname=$data[$prekeyname];                     * */                    $sql=<<<SQL                        update $tablename set $stringsets where $prekeyname=$data[$prekeyname];SQL;                    $res=mysqli_query($dbc,$sql);                    if($res)                    {                        return true;                    }else{                        return false;                    }                }else{                        echo '連接錯誤';                }        }/*         *獲取表的所有列名         *@param:$tablename:表名         */        function getColumns($tablename)        {                $dbc=@mysqli_connect('localhost','root','1234','information_schema');            if(!$dbc)            {                echo 'Connect Error'.mysqli_connect_error($dbc);            }else            {                //連接成功,從表COLUMNS獲取表的所有列名                        $sql='select COLUMN_NAME from columns where TABLE_NAME='$tablename'';                $res=@mysqli_query($dbc,$sql);                $items=array();                if($res)                {                    while($row=mysqli_fetch_array($res,MYSQLI_ASSOC))                    {                        $columnname=$row['COLUMN_NAME'];                        array_push($items,$columnname);                    }                                return $items;                mysqli_close($dbc);                }                else{                    echo '查詢失敗,請檢查SQL語句!';                    }                        }        }

    完整代碼附件(其中easyui相關文件沒有添加


    PHP編程

    鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 亚洲精品在线国产 | 久久99深爱久久99精品 | 色婷婷香蕉在线一区二区 | 欧美黑人一级毛片 | 中文不卡在线 | 欧美乱妇高清无乱码 | 亚洲婷婷一区二区三区 | 亚洲一区二区三区免费视频 | 久久三区 | 五月激情六月综合 | av自拍 | 国产在线一级视频 | 日韩av福利 | 欧美日韩在线观看中文字幕 | 青青青国产精品一区二区 | 黄色资源网站 | av国产精品 | gav成人免费播放视频 | 日本三级在线观看网站 | 国产一区观看 | 精品久久久久久久 | 黄色高清视频在线观看 | 久久久久久免费 | 黄色网址在线免费观看 | 欧美久久久久久久久中文字幕 | 天天干 夜夜操 | 最新av在线网址 | 欧美成人精品一区二区男人看 | 欧美日韩91 | av中文字幕网 | 久久国产高清 | 欧美精品导航 | 日韩电影一区二区三区 | 成人一边做一边爽爽视频 | 日韩一级在线免费观看 | 国内精品久久久久国产 | 国产一级淫片a级aaa | 久草在线青青草 | 国产精品久久久久久av公交车 | 免费超碰 | 小罗莉极品一线天在线 |