W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗值獎勵
Joomla提供兩種方式來插入記錄,一種是SQL,一種是對象的方法
JDatabaseQuery類提供了一些方法來方便構(gòu)建插入的SQL查詢語句,其中最常用的就是insert ,columns,values.典型的使用代碼如下:
// 得到數(shù)據(jù)庫鏈接對象
$db = JFactory::getDbo();
// 創(chuàng)建一個查詢對象
$query =$db->getQuery(true);
// 準(zhǔn)備插入的行
$columns =array('user_id','profile_key','profile_value','ordering');
// 準(zhǔn)備需要插入的值
$values =array(1001,$db->quote('zmax99.com'),$db->quote('Inserting a record using insert()'), 1);
// 構(gòu)建插入的查詢語句.
$query
->insert($db->quoteName('#__zmax_user'))
->columns($db->quoteName($columns))
->values(implode(',',$values));
// 設(shè)置查詢并且執(zhí)行.
$db->setQuery($query);
$db->execute();
在上面的代碼中使用了 quotename()方法 ,這個方法的作用是添加引號。在書寫查詢語句的時候,在表名或者字段名上加上引號,可以避免和數(shù)據(jù)庫的保留字沖突。
當(dāng)插入完成后,通過調(diào)用insertid方法獲得插入的ID.代碼如下:
// 得到剛剛插入記錄的ID
$new_row_id =$db->insertid();
如果字段的默認(rèn)值為NULL,那么你在插入的時候就不要設(shè)置這個字段名,讓數(shù)據(jù)庫系統(tǒng)字段給他賦值NULL.如果你的字段默認(rèn)值不是NULL,且該字段允許值為NULL,那么你需要明確的在代碼中指定插入NULL.代碼如下:
// 得到數(shù)據(jù)庫鏈接對象
$db = JFactory::getDbo();
// 創(chuàng)建一個查詢對象
$query =$db->getQuery(true);
// 準(zhǔn)備插入的行
$columns =array('user_id','profile_key','profile_value','ordering');
// 準(zhǔn)備需要插入的值
$values =array(1001,$db->quote('zmax99.com'), $db->quote('NULL'), 1);
// 構(gòu)建插入的查詢語句.
$query
->insert($db->quoteName('#__zmax_user'))
->columns($db->quoteName($columns))
->values(implode(',',$values));
// 設(shè)置查詢并且執(zhí)行.
$db->setQuery($query);
$db->execute();
JDatabaseDriver類提供了一個不需要寫任何SQL語句就可以插入記錄的方法。代碼如下:
// 創(chuàng)建一個對象
$profile =new stdClass();
$profile->user_id = 1001;
$profile->profile_key='zmax;
$profile->profile_value='Inserting a record using insertObject()';
$profile->ordering=1;
// 插入對象到zmax_user表中.
$result = JFactory::getDbo()->insertObject('#__zmax_user',$profile);
注意,在上面并沒有使用quoteName方法來給表名加上引號,這是因為 insertObject方法會自動的幫我們做這一操作。
在執(zhí)行插入的過程中,如果出現(xiàn)錯誤,insertObject方法會拋出一個錯誤。如果你的數(shù)據(jù)表中設(shè)置了主鍵值,那么建議你在執(zhí)行插入之前,先檢查這個主鍵值是否存在,這樣可以避免不必要的麻煩。
insertObject方法支持第三方個參數(shù),這個參數(shù)為表的主鍵名。當(dāng)你指定了這個參數(shù)后,在插入完成后,會更新對象,將主鍵值設(shè)置到對象上面去??梢允褂眠@種方式獲得插入的ID.
$result =$dbconnect->insertObject('#__my_table',$object,'primary_key');
上面的代碼執(zhí)行完成后,$object->primary_key的值將被更新為插入記錄的ID.
提示:在插入之前需要將$object->primary_key 設(shè)置為 null 或 0
如果字段的默認(rèn)值為NULL,那么你的對象不加上這個屬性就可以了,讓數(shù)據(jù)庫系統(tǒng)字段給他賦值NULL.如果你的字段默認(rèn)值不是NULL,且該字段允許值為NULL,那么你需要明確的在代碼中指定插入NULL.代碼如下:
// 創(chuàng)建一個對象
$profile =new stdClass();
$profile->user_id = 1001;
$profile->profile_key='zmax';
$profile->profile_value =$db->quote('NULL');
$profile->ordering=1;
// 插入對象到zmax_user表中.
$result = JFactory::getDbo()->insertObject('#__zmax_user',$profile);
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報電話:173-0602-2364|舉報郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: