程序在獲取數據的時候,如果你不指定獲取數據的字段,那么程序會去解析數據庫獲取對應的字段,為此增加了IO的開銷,如果把$field里面的字段補充完整,可以減少IO的輸出提高性能
我們提供的服務有:網站設計、成都網站建設、微信公眾號開發、網站優化、網站認證、陽原ssl等。為上千多家企事業單位解決了網站和推廣的問題。提供周到的售前咨詢和貼心的售后服務,是有科學管理、有技術的陽原網站制作公司
function add($name, $type, $size, $defaultvalue = '', $options = '', $title = '', $note = '', $formtype = '', $inputtool = '', $inputlimit = '', $enablehtml = 1, $enablelist = 1, $enablesearch = 0)
{
if(!in_array($type, $this-fieldtypes) || $this-exists($name)) return FALSE;
$size = intval($size);
$fieldsize = $type == 'varchar' ? min($size, 255) : ($type == 'int' ? min($size, 10) : 0);
$fieldtype = strtoupper($type);
if($fieldsize) $fieldtype .= "( $fieldsize )";
$this-db-query("ALTER TABLE $this-table ADD $name $fieldtype NOT NULL");
$this-db-query("INSERT INTO ".TABLE_FIELD."(tablename,name,type,size,defaultvalue,options,title,note,formtype,inputtool,inputlimit,enablehtml,enablelist,enablesearch) VALUES('$this-table','$name','$type','$size','$defaultvalue','$options','$title','$note','$formtype','$inputtool','$inputlimit','$enablehtml','$enablelist','$enablesearch')");
$result = $this-db-affected_rows();
$this-cache();
return $result;
}
function edit($fieldid, $type, $size, $defaultvalue = '', $options = '', $title = '', $note = '', $formtype = '', $inputtool = '', $inputlimit = '', $enablehtml = 1, $enablelist = 1, $enablesearch = 0)
{
if(!in_array($type, $this-fieldtypes)) return FALSE;
$fieldid = intval($fieldid);
$field = $this-get_info($fieldid);
$name = $field['name'];
$size = intval($size);
$fieldsize = $type == 'varchar' ? min($size, 255) : ($type == 'int' ? min($size, 10) : 0);
$fieldtype = strtoupper($type);
if($fieldsize) $fieldtype .= "( $fieldsize )";
$this-db-query("ALTER TABLE `$this-table` CHANGE `$name` `$name` $fieldtype NOT NULL");
$this-db-query("UPDATE ".TABLE_FIELD." SET title='$title',note='$note',type='$type',size='$size',defaultvalue='$defaultvalue',options='$options',formtype='$formtype',inputtool='$inputtool',inputlimit='$inputlimit',enablehtml='$enablehtml',enablelist='$enablelist',enablesearch='$enablesearch' WHERE fieldid=$fieldid");
$result = $this-db-affected_rows();
$this-cache();
return $result;
}
function delete($fieldid)
{
$fieldid = intval($fieldid);
$r = $this-db-get_one("SELECT name FROM ".TABLE_FIELD." WHERE fieldid=$fieldid");
if(!$r) return FALSE;
$name = $r['name'];
$this-db-query("ALTER TABLE $this-table DROP $name");
$this-db-query("DELETE FROM ".TABLE_FIELD." WHERE fieldid=$fieldid");
$result = $this-db-affected_rows();
$this-cache();
return $result;
}
db數據庫類去下個phpcms里面的就是上面的是自定義字段的操作函數
phpcms v9 單頁添加自定義字段方法如下:
1、給單頁 page 自定義摘要
第一步,打開數據庫,找到 v9_page 數據表添加一個 description 字段,字段類型為 varchar,長度為 255即可。
第二步,打開 phpcms\modules\content\templates\content_page.tpl.php 文件,并到到如下代碼:
tr
th width="80" ?php echo L('content');?/th
td
//上方添加:
tr
th width="80"內容簡介/th
tdtextarea type="text" name="info[description]"
style='width:98%;height:46px;'?php echo $description?
/textarea只可輸入Bspan id="description_len"255
/span/B 個字符 /td
/tr
更改完成之后,我們還需要更新一下后臺緩存,然后進行某一個單頁的編輯,這個時候就會有文章摘要的字段了,前臺只需要進行調用 {$description} 就可以了。
二、給單頁 page 自定義圖片字段,方便圖片的上傳.
上面已經介紹過如何給單頁添加文字字段了,這里再介紹下如何給單頁添加一個圖片的字段,并可以進行圖片的上傳。
1、同樣打開mysql數據庫,找到 v9_page表,打開表結構并添加一個圖片的字段:catpic類型varchar,長度100,當然也可以不用進行設置。
2、打開 phpcms\modules\content\templates\content_page.tpl.php文件,在48行下面插入如下代碼:
tr
th width=”80〃欄目圖片/th
td
?php echo form::images(‘info[catpic]‘, ‘image’, $catpic, ‘content’);?
/td/tr
更改完之后,進行后臺緩存更新,然后再進行單頁的添加或者編輯的時候就可以看到自定義的上傳圖片字段了,在前臺調用的代碼為 {$catpic},
直接在 page.html 模板中進行調用。
首先說明一點,用序列化和JSON不會不安全啊,數據安不安全取決于你的程序有沒有過濾并且處理好要入庫的數據,一般來說,入庫的數據是需要保證安全的。
對于你這個問題,最好的做法還是字段擴展,這樣至少搜索速度上不會出現大問題,如果是將所有的數據都放到一個字段上,就是上面的content字段,這樣后續并不利于搜索,數據感覺也比較混亂。如果僅僅是多語言實現,單詞之間的對應關系,這樣使用單字段還是可以的,畢竟數據也不多。