PHP程序里面
各位好,我正打算建一個(gè)數(shù)據(jù)應(yīng)用的插件,是一種科研機(jī)構(gòu)的特殊需求,目前思路有的,我已經(jīng)應(yīng)用于實(shí)際生產(chǎn)中了,只不過(guò)最近想轉(zhuǎn)移到迅睿CMS上來(lái)。
目前遇到一個(gè)向數(shù)據(jù)表插入數(shù)據(jù)的問(wèn)題。
我的子站數(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,每個(gè)應(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í)報(bào)錯(cuò)了,還是數(shù)據(jù)插入到數(shù)據(jù)表的語(yǔ)句有問(wèn)題。
現(xiàn)在SQL語(yǔ)句是:我通過(guò)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 ('一體化平臺(tái)', '123', ('','',''), ('1','2','3','4'), ('','','',''), '{}', ('','',''), '', '{}')
現(xiàn)在這個(gè)語(yǔ)句是明顯有問(wèn)題的,
我提交的數(shù)據(jù)是:
Array ( [name] => 這是測(cè)試 [description] => 這是測(cè)試 [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] => {} )
因?yàn)椴砰_(kāi)始使用并琢磨迅睿cms,我對(duì)數(shù)據(jù)的sql形成過(guò)程一頭霧水。
所以我在想辦法解決這個(gè)問(wèn)題,在這里請(qǐng)教一下。
數(shù)據(jù)表的字段結(jié)構(gòu)好改的,這個(gè)按實(shí)際結(jié)果調(diào)整。
類似于seo字段,我提交的字段里是區(qū)分了3個(gè) ( [seo_title] => [seo_keywords] => [seo_description] => ) 為什么插入時(shí)都沒(méi)有對(duì)應(yīng)關(guān)系了?
我現(xiàn)在是直接用的post(0),是不是向我這種自定義需求的,不能用post()這種方法,必須使用
\Phpcmf\Service::M()->db->table(SITE_ID.'_census')->insert($arr[0]);
這種形式?
4.作為一個(gè)自定義插件,我的數(shù)據(jù)插入只針對(duì)自己的表,是不是在add()方法里直接操作數(shù)據(jù)入表?
插入前,需要把數(shù)組的字段轉(zhuǎn)換為字符串,才能入庫(kù)
dr_array2string函數(shù)
開(kāi)源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問(wèn)題!
創(chuàng)始人您好,請(qǐng)問(wèn)要把post過(guò)來(lái)的數(shù)據(jù)進(jìn)行格式化,比如dr_array2string,應(yīng)該在哪里進(jìn)行?
也就是說(shuō),不能直接使用post()這個(gè)方法了,像是http.php那個(gè)用法
list($tpl) = $this->_Post(0);
我應(yīng)該不可以直接修改table文件,那么是不是用鉤子的寫(xiě)法?
或者,我應(yīng)該采放棄用$this->_Post(0);直接用數(shù)據(jù)表的寫(xiě)法?
也就是
回復(fù)迅睿框架創(chuàng)始人
只能在入庫(kù)前使用轉(zhuǎn)換,否則入庫(kù)會(huì)報(bào)錯(cuò)
推薦使用這個(gè)文檔
參考文檔:《Table操作類》
開(kāi)源是一種精神,但不是義務(wù),幫忙是情分,不幫也不要抱怨,建議大家多研究代碼、多閱讀代碼、多翻閱社區(qū)歷史問(wèn)題!