drupal插入 更新資料db merge

2021-06-14 12:57:15 字數 1338 閱讀 3849

一般來說,我們會對資料庫已經存在的內容進行更新,對不存在的進行插入,但是有時候我們並不確定資料庫裡有沒有這條記錄。

這個時候,我們課喲使用db_merge()函式來解決這個問題,這個函式會自動為您選擇:如果有則更新,如果沒有則插入。

在不使用這個函式的情況下,大部分人會這樣解決:

<?php

if (db_result(db_query("select count(*) from where id=:id", array(':id' => $id))->fetchfield()))

else

?>

使用了這個函式我們這個操作將會變得簡單和靈活。

<?php

db_merge('node', $options);

?>

db_merge接受兩個引數,資料庫表名,資料庫連線選項。

<?php

db_merge('example')

->key(array('name' => $name))

->fields(array(

'field1' => $value1,

'field2' => $value2,

))->updatefields(array(

'field1' => $alternate1,

))->execute();

?>

db_merge()中使用key來充當where的角色,控制查詢選項。

在這個例子中,如果'name'=>$name這個記錄存在則執行updatefields中的更新,否則執行fields中的插入。

updatefields和fields的資料結構是一樣的。

看下面的例子:

<?php

db_merge('example')

->key(array('name' => $name))

->fields(array(

'field1' => $value1,

'field2' => $value2,

))->expression('field1', 'field1 + :inc', array(':inc' => 1))

->execute();

?>

這個例子和上面的差不多,只不過當資料存在的時候會執行乙個更新運算,而不是直接更新。

expression()湧來執行更新運算,接受三個引數,欄位名,運算表示式,如果表示式裡使用變數請使用代替符,第三個引數是乙個陣列,提供被代替符替換的變數,形式見上面的表示式。

expression()可以被多次執行。

dbm與mysql區別 dbm資料庫

所有版本的linux以及大多數的unix版本都隨系統帶有乙個基本的 但卻非常搞笑的資料儲存歷程集,他被稱為dbm資料庫。適用於儲存比較靜態的索引化資料庫,即使用索引來儲存可變長的資料結構,然後通過索引或順序掃瞄資料庫來檢索結構,適用於處理那些被頻繁訪問但卻很少被更新的資料,因為建立資料項時非常慢,而...

資料插入更新刪除

insert into 表名 values 值1,值2 insert into student id,name,age,email value 1 張三 18 男 zhangsan 163.com insert into 表名 欄位名1 欄位名2 value 值1,值2 insert into 表名...

資料 更新 插入 刪除

1.update實現對資料的更新操作,語法如下 更新單行資料 update dbtab set f1 g1 fn gn where f表組建欄位名,g為新設定的值,where為確保只更新單行。注 除f g外還可 f f g f f g 通過工作區更改單行資料 update dbtab from wa...