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