codecamp

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 在查询中使用OR
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; }