我有一个 sql 查询工作正常。然而执行后(使用sourcerer插件插入joomla中的php表单)结果数组保持为空。
sql代码:
SELECT `comid`,`comname`,`comlogo`
FROM ffd_companies,ffd_comusercon,ffd_users
WHERE companyid=comid AND userid=id AND id=1;
joomla->customHTMLmodule->sourcerer 中的代码:
{source}
<?php
$user = JFactory::getUser();
echo $user->id;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('comid','comname')));
$query->from($db->quoteName(array('ffd_companies','ffd_comusercon','ffd_users')));
$query->where($db->quoteName('companyid').' = '.$db->quoteName('comid').' AND '.$db->quote('userid') .' = '. $db->quote('id').' AND '. $db->quote('userid') .' = '.$db->quote($user->id));
$db->setQuery($query);
$row = $db->loadRowList();
print_r($row);
?>
{/source}
表和关系:
SQL 查询:SELECT * FROM ffd_users
;
ID ...
标准 joomla 用户表没有任何变化
SQL 查询:SELECT * FROM ffd_comusercon
; (用户和公司之间多对多关系的索引表)
公司 ID(COMID 的外键)用户 ID(ID 的外键)
SQL 查询:SELECT * FROM ffd_companies
;
comid comname comtype comlogo comyedek1 comyedek2 omyedek3 comyedek4 comyedek5 comyedek6 comyedek7 comyedek8
最佳答案
这应该有效:
<?php
$user = JFactory::getUser();
echo $user->id;
$db = JFactory::getDbo();
$query = $db->getQuery(true);
$query->select($db->quoteName(array('comid','comname')))
->from($db->quoteName(array('ffd_companies','ffd_comusercon','ffd_users')))
->where($db->quoteName('companyid').' = '.$db->quoteName('comid'))
->where($db->quote('userid') .' = '. $db->quote('id'))
->where($db->quote('userid') .' = '.$db->quote($user->id));
$db->setQuery($query);
$row = $db->loadObjectList();
var_dump($row);
?>
更新查询(使用左连接),这只是没有数据库结构的猜测,但我想你明白了
$query->select('COMP.id AS comid, COMP.name as comname')->
from($db->quoteName('#__companies') . ' COMP')->
join('LEFT', $db->quoteName('#__comusercon') . ' COMPX ON COMP.id = COMPX.company_id')->
join('LEFT', $db->quoteName('#__users') . ' USR ON USR.id = COMPX.user_id')->
where('USR.id = ' . $db->quote($user->id))->
group('COMP.id');
关于php - joomla下执行的php从sql中检索多行数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22217953/