PHP SQL Joomla 3中的多表查询
我的SQL技能有点有限,但我能很好地解决如何查询问题。有没有更好的方法在一个操作中执行下面的SQL语句,而不是将其分成三个操作PHP SQL Joomla 3中的多表查询,php,sql,joomla3.2,Php,Sql,Joomla3.2,我的SQL技能有点有限,但我能很好地解决如何查询问题。有没有更好的方法在一个操作中执行下面的SQL语句,而不是将其分成三个操作 $db = JFactory::getDbo(); $query = "SELECT email FROM xx_opencart_customer WHERE customer_id = '".$this->session->data['customer_id']."'"; $db->s
$db = JFactory::getDbo();
$query = "SELECT email FROM xx_opencart_customer WHERE customer_id = '".$this->session->data['customer_id']."'";
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $t) {;
}
$db = JFactory::getDbo();
$query = "SELECT id FROM xx_users WHERE email = '".$t->email."'";
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $t) {;
}
$db = JFactory::getDbo();
$query = "SELECT group_id FROM xx_user_usergroup_map WHERE user_id = '".$t->id."'";
$db->setQuery($query);
$results = $db->loadObjectList();
foreach ($results as $t) {;
}
最终的结果是,我能够说出$t->group_id等于多少。试试这个:
$db = JFactory::getDbo();
$query = "SELECT z.group_id
FROM #__opencart_customer x, #__users y, #__user_usergroup_map z
WHERE x.customer_id = ".
$db->quote($this->session->data['customer_id']).
" AND x.email = y.email AND y.id = z.user_id";
$db->setQuery($query);
$result = $db->loadResult();
对于单值结果,不需要使用$db->loadObjectList()代码>
对于表名,不要使用实际的dbprefix。改用#
。通过这种方式,您可以从configuration.php更改表前缀,而无需更改查询。
另外,不需要设置$db=JFactory::getDbo()代码>每次。一次就够了
希望这有帮助。。
干杯 我添加了$db->quote函数,该函数还将转义输入以防止SQL注入attacks@Tzar请对多个插入也能这样做吗?我想在表1中插入值,检索最后一个_insert_ID(),然后将该值和其他值插入表2中。提前谢谢。@Daydah我想你也可以做多次插入。从你的评论来看,我不太清楚你到底想达到什么目的。@Tzar谢谢你的回复。我想在普通SQL中实现的是简单的,我可以演示如何使用Joomla quickfix[这可以在您的解决方案中使用JFactory格式完成吗?]:插入jx_用户
(name
,username
,密码
,params
)值('Administrator2'、'admin2'、'd2064d358136996bd22421584a7cb33e:trd7TvKHx6dMeoMmBVxYmg0vuXEA4199','');插入到jx_用户组用户映射中(用户id
,组id
)值(最后插入id(),'8');