thinkphp CURD 返回值問題

2021-07-13 18:28:35 字數 3337 閱讀 6552

thinkphp的資料寫入操作使用add方法,使用示例如下:

$user =m

("user"

);// 例項化user物件

$data

['name']=

'thinkphp'

;

$data

['email']=

'[email protected]'

;

$result=$user

->

add(

$data

);

操作完成後如果寫入結果$result資料非法則返回false,如果是自增主鍵 $result則返回主鍵值,否則返回1。

讀取資料是指讀取資料表中的一行資料(或者關聯資料),主要通過find方法完成,例如:

$user =m

("user"

);// 例項化user物件

// 查詢status值為1name值為think的使用者資料

$data

=$user

->

where

('status=1 and name="thinkphp"'

)->

find

();

讀取資料集其實就是獲取資料表中的多行記錄(以及關聯資料),使用select方法,使用示例:

$user =m

("user"

);// 例項化user物件

// 查詢status值為1的使用者資料 以建立時間排序 返回10條資料

$list

=$user

->

where

('status=1'

)->

order

('create_time'

)->

limit(10

)->

select

();

如果查詢出錯,select的返回值是false,如果查詢結果為空,則返回null,否則返回二維陣列。

讀取字段值其實就是獲取資料表中的某個列的多個或者單個資料,最常用的方法是getfield方法。

示例如下:

$user =m

("user"

);// 例項化user物件

// 獲取id為3的使用者的暱稱

$nickname

=$user

->

where

('id=3'

)->

getfield

('nickname'

);

預設情況下,當只有乙個欄位的時候,返回滿足條件的資料表中的該字段的第一行的值。

如果需要返回整個列的資料,可以用:

$user

->

getfield

('id'

,true

);// 獲取id陣列

//返回資料格式如array(1,2,3,4,5)一維陣列,其中value就是id列的每行的值

如果傳入多個字段的話,預設返回乙個關聯陣列:

$user =m

("user"

);// 例項化user物件

// 獲取所有使用者的id和暱稱列表

$list

=$user

->

getfield

('id,nickname'

);

//兩個欄位的情況下返回的是array(`id`=>`nickname`)的關聯陣列,以id的值為key,nickname字段值為value

這樣返回的list是乙個陣列,鍵名是使用者的id欄位的值,鍵值是使用者的暱稱nickname。

如果傳入多個欄位的名稱,例如:

$list 

=$user

->

getfield

('id,nickname,email'

);

//返回的陣列格式是array(`id`=>array(`id`=>value,`nickname`=>value,`email`=>value))是乙個二維陣列,key還是id欄位的值,但value是整行的array陣列,類似於select()方法的結果遍歷將id的值設為陣列key

返回的是乙個二維陣列,類似select方法的返回結果,區別的是這個二維陣列的鍵名是使用者的id(準確的說是getfield方法的第乙個欄位名)。

如果我們傳入乙個字串分隔符:

$list 

=$user

->

getfield

('id,nickname,email'

,':'

);

那麼返回的結果就是乙個陣列,鍵名是使用者id,鍵值是nickname:email的輸出字串。

getfield方法還可以支援限制數量,例如:

$this

->

getfield

('id,name',5

);// 限制返回5條記錄

$this

->

getfield

('id',3

);// 獲取id陣列 限制3條記錄

可以配合使用order方法使用。更多的查詢方法可以參考查詢語言章節。

注:關於

select

() 和

getfield()

的返回值問題,select完全不變,getfield則是會根據查詢的

不同字段個數

而導致返回值的變化。

乙個為一維,兩個

上則為`id`=>`nickname`

形式的關聯陣列

,三個及以上

是則為以第乙個字段值為key的二維陣列

`id`=>array(`id`=>value,`nickname`=>value,`email`=>value)

有返回值和無返回值函式

前面在定義函式時,有些函式使用了return語句,有些函式沒有使用return語句,使用return語句與不使用return語句有什麼區別呢?由前面的章節我們知道,若定義函式時沒有使用return語句,則預設返回乙個none。要返回乙個none,可以只寫乙個return,但要返回具體的數值,就需要在...

返回值優化

通過傳值方式返回要建立新物件時,應注意使用的形式,例如在operator return integer left.l right.l 咋看起來這像是乙個 對乙個建構函式的呼叫 其實並非如此。這是臨時物件語法,它是在說 建立乙個臨時integer物件並返回它 據此我們可能認為如果建立乙個有名字的區域性...

返回值優化

返回值優化,是一種屬於編譯器的技術,它通過轉換源 和物件的建立來加快源 的執行速度。rvo return value optimization。class complex 複數 complex const complex a real a.real imag a.imag complex opera...