教程栏目

joomla中文网出品的官方教程

Joomla更新记录的方法

使用SQL


JDatebaseQuery对象提供了update().set()这两个方法来构建更新SQL语句。通用可以使用where()来指定条件。典型的代码如下:

$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->update($db->quoteName('#__zmax_user'))->set("state=1")->where("id=99");
$db->setQuery($query);
$result = $db->execute(); 

这里的set,where方法也支持数组,可以同时设置多个字段。代码如下:

$db = JFactory::getDbo();
$query = $db->getQuery(true);

// 需要更新的字段
$fields = array(
    $db->quoteName('intro') . ' = ' . $db->quote('my nam is zhangmin.'),
    $db->quoteName('ordering') . ' = 2',
    // 设置null值得方法
    $db->quoteName('avatar') . ' = NULL',
);

// 更新的条件
$conditions = array(
    $db->quoteName('user_id') . ' = 42', 
    $db->quoteName('name') . ' = ' . $db->quote('zmax99')
);
$query->update($db->quoteName('#__zmaxuser'))->set($fields)->where($conditions);

$db->setQuery($query);
$result = $db->execute();

使用对象来更新记录


JDatabaseDriver类提供了updateObject方法来更新一条记录。

$updateNulls = true; //是否更新NULL值

// 创建一个对象,这个对象的字段必须和需要更新数据表的字段一致,可以少,但不能多
$object = new stdClass();

$object->id = 1;// 需要更多数据表的主键
$object->title = 'My Custom Record';
$object->description = 'A custom record being updated in the database.';

// 如果需要设置NULL,需要明确在值中指定.
$object->short_description = null;
$result = JFactory::getDbo()->updateObject('#__zmaxuser', $object, 'id', $updateNulls);

insertObject一样,updateObject方法也会自己给数据表加上引号。执行updateobject方法失败将会抛出一个错误。因此,在更新之前,最好能够检查一下这个记录是否存在。

作者: 樱木花道

Joomla程序员,从J1.5到J4.x始终都在做Joomla相关开发定制工作,有超过10年行业经验,国内Joomla扩展开发商ZMAX团队的核心成员

作者网站:ZMAX程序人

评论 (0)

  • 最新在前
  • 最佳在前

第3章 处理URL请求参数

第5章 日志

第6章 错误和调试

第10章 缓存

第14章 路由系统