当访问数据库时,XOOPS提供了数据库抽象层供您使用。
可以通过两种方式获取数据库对象
a) 使用 $xoopsDB 实例 - 如果你在一个函数或类方法中,你需要首先使用以下方式声明它为全局变量
global $xoopsDB;
b) 调用数据库类上的静态 getInstance() 方法
$xoopsDB =& XoopsDatabaseFactory::getDatabaseConnection();
完成这些操作后,您可以使用数据库对象来查询数据库
//任意语句可放入查询中 - SELECT, UPDATE, INSERT等.
$result = $xoopsDB->query('SELECT * FROM [...] ');
//如果是SELECT语句,$result将现在是一个结果集,因此让我们遍历它
while ($row = $xoopsDB->fetchArray($result)) {
$variable = $row['index'];
$another_variable = $row['another_index'];
}
如果不是SELECT语句,$result将为真或假,这取决于SQL查询是否遇到了错误。
请参阅此处的
问答
我的数据库查询列表
以下是访问XOOPS数据库的一些数据库查询。
// To delete rom from table
$query = "Delete from ".$xoopsDB->prefix("xoops_table")." where id='$id'";
// To insert a row into the table
$sql = "INSERT INTO ".$xoopsDB->prefix('xoops_table');
$sql .= " ( xuser, emailname ) VALUES ";
$sql .= " ( '$user', '$userwebname' )";
if ( ! $xoopsDB->query($sql) )
{
echo( $xoopsDB->error." : ".$xoopsDB->errno );
}
//To update a row
$query = "Update ".$xoopsDB->prefix("xoops_table")." smtpuname = '$smtpuname', smtppasswd = '$smtppasswd' where id='$id' ";
//Select from row
$query = 'SELECT field1, field2 FROM ' . $xoopsDB->prefix('tablename') . ' WHERE searchfield1 =1';
//Query database
$query = "select * FROM ".$xoopsDB->prefix("xoops_table")." where uid = $userid";
$results=$xoopsDB->query($query,$options[0],0);
//Compare 2 groups through a user uid. 1 user stored in db, other is current. I have to thank Mithrandir for giving me this code.
$db_uid = $row['uid'];
$userid = $xoopsUser->uid();
if ($userid != $db_uid) {
$member_handler =& xoops_gethandler('member');
$db_groups = $member_handler->getGroupsByUser($db_uid);
$current_groups = $xoopsUser->getGroups();
$common_groups = array_intersect($current_groups, $db_groups);
}
if ($userid==$db_uid || !empty($common_groups)){
//do something
}