聯(lián)系官方銷售客服
1835022288
028-61286886
PHP程序里面
各位好,我正打算建一個數(shù)據(jù)應(yīng)用的插件,是一種科研機構(gòu)的特殊需求,目前思路有的,我已經(jīng)應(yīng)用于實際生產(chǎn)中了,只不過最近想轉(zhuǎn)移到迅睿CMS上來。
目前遇到一個向數(shù)據(jù)表插入數(shù)據(jù)的問題。
我的子站數(shù)據(jù)表如下:
CREATE TABLE IF NOT EXISTS `{dbprefix}yth_app` (
`id` int(10) NOT NULL AUTO_INCREMENT COMMENT'自增ID',
`name` varchar(255) NOT NULL COMMENT'應(yīng)用名稱',
`description` text NOT NULL COMMENT'應(yīng)用描述',
`seo` json DEFAULT NULL COMMENT'SEO設(shè)置',
`is_unified_user_groups` int(1) NOT NULL DEFAULT '0' COMMENT'是否限制用戶組',
`unified_user_groups` json DEFAULT NULL COMMENT'統(tǒng)一設(shè)置用戶組',
`is_unified_data_source` int(1) NOT NULL DEFAULT '0' COMMENT'是否限制數(shù)據(jù)源',
`unified_data_source` json DEFAULT NULL COMMENT'統(tǒng)一設(shè)置數(shù)據(jù)源',
`is_unified_limit_ip` int(1) NOT NULL DEFAULT '0' COMMENT'是否限制IP',
`unified_limit_ip` json COMMENT'統(tǒng)一設(shè)置IP',
`is_unified_data_filtering` int(1) NOT NULL DEFAULT '0' COMMENT'是否提取數(shù)據(jù)',
`unified_data_filtering` json DEFAULT NULL COMMENT'統(tǒng)一數(shù)據(jù)提取',
。。。。。
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='數(shù)據(jù)一體化應(yīng)用表';
類似于數(shù)據(jù)源篩取規(guī)則,只能保存為json,每個應(yīng)用都不一樣的,這里不能存為固定字段。
我是新手,模仿api接口用的方法,
public function add() {
$this->_Post(0);
// print_r($tpl);exit;home_post.html
\Phpcmf\Service::V()->assign('disabled', 0);
\Phpcmf\Service::V()->display('yth_admin_add_app.html');
}
結(jié)果在插入數(shù)據(jù)時報錯了,還是數(shù)據(jù)插入到數(shù)據(jù)表的語句有問題。
現(xiàn)在SQL語句是:我通過mysql執(zhí)行記錄找到的
REPLACE INTO `dr_yth_app` (`name`, `description`, `seo`, `unified_user_groups`, `unified_data_source`, `unified_limit_ip`, `unified_template`, `unified_separate`, `unified_img_source`) VALUES ('一體化平臺', '123', ('','',''), ('1','2','3','4'), ('','','',''), '{}', ('','',''), '', '{}')
現(xiàn)在這個語句是明顯有問題的,
我提交的數(shù)據(jù)是:
Array ( [name] => 這是測試 [description] => 這是測試 [seo] => Array ( [seo_title] => [seo_keywords] => [seo_description] => ) [unified_user_groups] => Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 ) [unified_data_source] => Array ( [ip] => [acount] => [password] => [base] => ) [unified_limit_ip] => {} [unified_template] => Array ( [index] => [channel] => [content] => ) [unified_separate] => [unified_img_source] => {} )
因為才開始使用并琢磨迅睿cms,我對數(shù)據(jù)的sql形成過程一頭霧水。
所以我在想辦法解決這個問題,在這里請教一下。
數(shù)據(jù)表的字段結(jié)構(gòu)好改的,這個按實際結(jié)果調(diào)整。
類似于seo字段,我提交的字段里是區(qū)分了3個 ( [seo_title] => [seo_keywords] => [seo_description] => ) 為什么插入時都沒有對應(yīng)關(guān)系了?
我現(xiàn)在是直接用的post(0),是不是向我這種自定義需求的,不能用post()這種方法,必須使用
\Phpcmf\Service::M()->db->table(SITE_ID.'_census')->insert($arr[0]);
這種形式?
4.作為一個自定義插件,我的數(shù)據(jù)插入只針對自己的表,是不是在add()方法里直接操作數(shù)據(jù)入表?
插入前,需要把數(shù)組的字段轉(zhuǎn)換為字符串,才能入庫
dr_array2string函數(shù)
創(chuàng)始人您好,請問要把post過來的數(shù)據(jù)進行格式化,比如dr_array2string,應(yīng)該在哪里進行?
也就是說,不能直接使用post()這個方法了,像是http.php那個用法
list($tpl) = $this->_Post(0);
我應(yīng)該不可以直接修改table文件,那么是不是用鉤子的寫法?
或者,我應(yīng)該采放棄用$this->_Post(0);直接用數(shù)據(jù)表的寫法?
也就是
回復迅??蚣軇?chuàng)始人
只能在入庫前使用轉(zhuǎn)換,否則入庫會報錯
推薦使用這個文檔
參考文檔:《Table操作類》