Re: [討論] PHP、HTML、css的切割
※ 引述《LaPass (LaPass)》之銘言:
: 想到另一種狀況
: 也是讓我很頭痛的....
: 就是,SERVER跟資料庫連接的話,總是有很高的機率出現這種東西
: $Sql=" SELECT * FROM USER WHERE (1=1) ";
: if(條件1)
: {
: $Sql.=" AND CLASS IN (".$SomeClass.") ";
: }
: if(條件2)
: {
: $Sql.=" AND TECHER IN (".$SomeOne.") ";
: }
: ...........
: if裡面可能會有更多的判斷式
: 或是用while for組合出其他SQL命令的判斷式
: 甚至可能會使用union結合其他table的狀況
: 請問有方法讓這種狀況乾淨一點嗎?
本來想用推文繼續但我想用回文好了。(推文不合適貼CODE)
$Sql=" SELECT * FROM USER WHERE (1=1) ";
$Sql .= dbWhere('條件1','CLASS',$SomeClass);
$Sql .= dbWhere('條件2','TEACHER',$SomeOne);
function dbWhere($bool,$field,$value){
$sql = false;
if($bool === true){
$sql = " AND {$field} IN ($value)";
}
return $sql;
}
上面只是一個例子。
假如說你的sql字串本身就是一群複雜的條件的確不易處理。
唯一能做的就是把這一群處理另案放在函式中判斷。
而不是用在主程式使用。
通常主程式還是維繫他乾淨的流程就好。
本來在資料庫串聯語法這件事就有很多吃力不討好的工作。
像ci也是,他是提供基本的active record。
一般的工作來說是可以滿足。
但有的時候就偏偏需要子查詢,或是特殊的資料排列在取出。
往往遇到這種的我就只能用$this->db->query()自己硬幹sql語句。
sql......真是讓人又愛又恨。
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.43.156.119
→
10/05 14:08, , 1F
10/05 14:08, 1F
推
10/05 14:08, , 2F
10/05 14:08, 2F
推
10/05 17:56, , 3F
10/05 17:56, 3F
推
10/06 19:40, , 4F
10/06 19:40, 4F
→
10/06 19:41, , 5F
10/06 19:41, 5F
討論串 (同標題文章)
PHP 近期熱門文章
PTT數位生活區 即時熱門文章