Joomla3开发教程

更新记录

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方法失败将会抛出一个错误。因此,在更新之前,最好能够检查一下这个记录是否存在。



作者:张敏
原文:http://www.joomlachina.cn/shouce/doc/1916?article_id=1899

获取最新资讯

© 广州市番禺区新造草云信息技术咨询服务部版权所有。
粤ICP备13002429号.

Joomla系列教程

站内链接