第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySql 通過 user_id 獲取頁面列表,或者如果未定義 user_id 則獲取所有頁面

MySql 通過 user_id 獲取頁面列表,或者如果未定義 user_id 則獲取所有頁面

PHP
qq_遁去的一_1 2023-10-15 17:08:03
我想從我的 MySQL 表中獲取頁面列表。但是,如果 $user_id 值為 NULL,并且如果定義了 $user_id 值,我需要獲取該特定用戶添加的頁面列表,我想獲取所有用戶添加的頁面列表。我覺得可能有一個簡單的解決方案,但我很長時間以來一直試圖找到這種情況的解決方案,但我使用諸如“WHERE user_id is NOT NULL OR user_id = $user_id”之類的方法失敗了。我需要如何修改下面的代碼才能獲得預期的結果?public function getPagesList($user_id = NULL){  $this->db->query ('    SELECT `page_id`, `page_name`    FROM `pages`    WHERE `user_id` = :user_id');$this->db->bind(':user_id', $user_id);return $this->db->resultSet();}
查看完整描述

2 回答

?
婷婷同學_

TA貢獻1844條經驗 獲得超8個贊

如果 $user_id 值為 NULL,并且如果定義了 $user_id 值,我想獲取所有用戶添加的頁面列表,我需要獲取該特定用戶添加的頁面列表。

這將翻譯為:

WHERE :user_id is NULL OR user_id = :user_id

當參數為 時null,返回所有行;設置該參數后,用于過濾列user_id。

您可以使用 稍微縮短表達式coalesce(),但效率可能較低:

WHERE COALESCE(:user_id, user_id) = user_id

請注意,正如 Liam Sorsby 所評論的,最有效的選項可能是檢查參數是否是從您的應用程序設置的,并相應地修改查詢字符串。如果不設置該參數,則查詢沒有子句WHERE;如果已設置,則WHERE user_id = :user_id.


查看完整回答
反對 回復 2023-10-15
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

您可以在 LIKE 中使用通配符


正如 Liam Sorsby 正確指出的那樣,所有頁面都可能有很多頁面,因此您應該考慮分頁或限制行數


public function getPagesList($user_id = NULL){

? ?$uid = is_null($user_id) ?? '%' : $user_id;

? $this->db->query ('

? ? SELECT `page_id`, `page_name`

? ? FROM `pages`

? ? WHERE `user_id` LIKE :user_id


');


$this->db->bind(':user_id', $uid);


return $this->db->resultSet();

}

這就像這樣


create table numericstring

( pk INT auto_INCREMENT PRIMARY KEY

, id INT

);

insert into numericstring (id) values

?( 20001 )

,( 20002 )

,( 30001 )

,( 30002 )

,( 30003 )

,( 30004 )

,( 37 )

,( 937 )

,( 21 )

,( 3 )

,( 222222 )

,( 3333 )

;

select * from numericstring WHERE id LIKE '3'

pk | id

-: | -:

10 |? 3

select * from numericstring WHERE id LIKE 3

pk | id

-: | -:

10 |? 3

select * from numericstring WHERE id LIKE '%'

pk |? ? ?id

-: | -----:

?1 |? 20001

?2 |? 20002

?3 |? 30001

?4 |? 30002

?5 |? 30003

?6 |? 30004

?7 |? ? ?37

?8 |? ? 937

?9 |? ? ?21

10 |? ? ? 3

11 | 222222

12 |? ?3333

db<>

查看完整回答
反對 回復 2023-10-15
  • 2 回答
  • 0 關注
  • 138 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號