codecamp

Joomla 插入记录

Joomla提供两种方式来插入记录,一种是SQL,一种是对象的方法

使用SQL插入记录

JDatabaseQuery类提供了一些方法来方便构建插入的SQL查询语句,其中最常用的就是insert ,columns,values.典型的使用代码如下:

// 得到数据库链接对象
$db = JFactory::getDbo();
 
// 创建一个查询对象
$query =$db->getQuery(true);
 
// 准备插入的行
$columns =array('user_id','profile_key','profile_value','ordering');
 
// 准备需要插入的值
$values =array(1001,$db->quote('zmax99.com'),$db->quote('Inserting a record using insert()'), 1);
 
// 构建插入的查询语句.
$query
    ->insert($db->quoteName('#__zmax_user'))
    ->columns($db->quoteName($columns))
    ->values(implode(',',$values));
 
// 设置查询并且执行.
$db->setQuery($query);
$db->execute();

在上面的代码中使用了 quotename()方法 ,这个方法的作用是添加引号。在书写查询语句的时候,在表名或者字段名上加上引号,可以避免和数据库的保留字冲突。

获得插入记录的ID

当插入完成后,通过调用insertid方法获得插入的ID.代码如下:

// 得到刚刚插入记录的ID
$new_row_id =$db->insertid();

如何存储空值为NULL

如果字段的默认值为NULL,那么你在插入的时候就不要设置这个字段名,让数据库系统字段给他赋值NULL.如果你的字段默认值不是NULL,且该字段允许值为NULL,那么你需要明确的在代码中指定插入NULL.代码如下:

// 得到数据库链接对象
$db = JFactory::getDbo();
 
// 创建一个查询对象
$query =$db->getQuery(true);
 
// 准备插入的行
$columns =array('user_id','profile_key','profile_value','ordering');
 
// 准备需要插入的值
$values =array(1001,$db->quote('zmax99.com'), $db->quote('NULL'), 1);
 
// 构建插入的查询语句.
$query
    ->insert($db->quoteName('#__zmax_user'))
    ->columns($db->quoteName($columns))
    ->values(implode(',',$values));
 
// 设置查询并且执行.
$db->setQuery($query);
$db->execute(); 

使用对象插入记录

JDatabaseDriver类提供了一个不需要写任何SQL语句就可以插入记录的方法。代码如下:

// 创建一个对象
$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方法会自动的帮我们做这一操作。

在执行插入的过程中,如果出现错误,insertObject方法会抛出一个错误。如果你的数据表中设置了主键值,那么建议你在执行插入之前,先检查这个主键值是否存在,这样可以避免不必要的麻烦。

insertObject方法支持第三方个参数,这个参数为表的主键名。当你指定了这个参数后,在插入完成后,会更新对象,将主键值设置到对象上面去。可以使用这种方式获得插入的ID.

$result =$dbconnect->insertObject('#__my_table',$object,'primary_key');

上面的代码执行完成后,$object->primary_key的值将被更新为插入记录的ID.

提示:在插入之前需要将$object->primary_key 设置为 null 或 0

 当使用对象插入的时候如何存储NULL

如果字段的默认值为NULL,那么你的对象不加上这个属性就可以了,让数据库系统字段给他赋值NULL.如果你的字段默认值不是NULL,且该字段允许值为NULL,那么你需要明确的在代码中指定插入NULL.代码如下:

// 创建一个对象
$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);


Joomla 删除记录
Joomla 从单表查询数据
温馨提示
下载编程狮App,免费阅读超1000+编程语言教程
取消
确定
目录

处理URL请求参数

Joomla 错误和调试

Joomla 缓存

关闭

MIP.setData({ 'pageTheme' : getCookie('pageTheme') || {'day':true, 'night':false}, 'pageFontSize' : getCookie('pageFontSize') || 20 }); MIP.watch('pageTheme', function(newValue){ setCookie('pageTheme', JSON.stringify(newValue)) }); MIP.watch('pageFontSize', function(newValue){ setCookie('pageFontSize', newValue) }); function setCookie(name, value){ var days = 1; var exp = new Date(); exp.setTime(exp.getTime() + days*24*60*60*1000); document.cookie = name + '=' + value + ';expires=' + exp.toUTCString(); } function getCookie(name){ var reg = new RegExp('(^| )' + name + '=([^;]*)(;|$)'); return document.cookie.match(reg) ? JSON.parse(document.cookie.match(reg)[2]) : null; }