我有這個查詢,我想運行在我的PHP應用程序後端。從概念上講,工作表是一個跟蹤我們所有工作表的數據庫。購買是一個數據庫,用於跟蹤哪些用戶有權訪問哪個表。我想要運行的查詢是用戶的ID,我可以獲取他們應該訪問的所有工作表。在查詢窗體:建立查詢與積極的記錄的利弊
select distinct s.wsid, s.name from sheets s, purchases p where
s.wsid = p.wsid AND p.uid = *value*;
其中值是由應用程序
我看到它的方式輸入的東西有兩種方式去獲得這個在後端工作。
項1)
public function getPurchasedSheets($uid){
if(is_numeric($uid)){ //check against injections
$query = "select distinct s.wsid, s.name from sheets s, purchases p
where s.wsid = p.wsid AND p.uid = ".$uid.";" ;
return $this->db->query($query);
} else {
return NULL; //or false not quite sure how typing works in PHP
}
}
選項2)
public function getPurchasedSheets($uid){
if(is_numeric($uid)){
$this->db->select('wsid, name');
$this->db->distinct();
$this->db->from('purchases');
//not sure which order the join works in...
$this->db->join('sheets', 'sheets.wsid = purchases.wsid');
$this->db->where('uid ='.$uid);
return $this->db->get();
} else {
return NULL;
}
}
源對所有的笨活動記錄命令:
codeigniter.com/user_guide/database/active_record.html
單向做事有某種表現或安全差異嗎? 或其他?這樣做的第二種方式似乎更讓我困惑......這有點複雜,因爲我不確定如何在這種編碼風格中進行參考消歧,因爲購買和工作表都有一個uid字段,但它們意味着不同的東西(除了首先不太熟悉SQL連接命令之外)。購買中的Uid(用戶ID)表示用戶已購買該工作表,而工作表中的Uid表示哪個用戶擁有該工作表。
TL,DR:基本上,我在問是否有一個原因,我應該沉迷於尋找如何做選項2的方式嗎?