php - joomla下执行的php从sql中检索多行数据

标签 php mysql sql joomla

我有一个 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/

相关文章:

javascript - js 文件中的 Prestashop Smarty 语言字符串

php - 从具有多个选择值的数据库中获取选定的选择选项 Codeigniter

sql - HIVE 检查表 1 中的数据,而表 2 中没有

php - 表 2 中的三个连接字段覆盖表 1 中的三个连接字段

sql - 当该日期的至少两条记录具有相同的持续时间或至少一条记录的持续时间为 0 时,如何标记该日期的所有记录

php - mysql_fetch_array()/mysql_fetch_assoc()/mysql_fetch_row()/mysql_num_rows 等...期望参数 1 是资源

php - 使用查询范围但具有不同的查询模型 - Laravel

php - N 数组的笛卡尔积

mysql - 检查 Laravel 查询的重叠时间段

php - 使用 PHP 和 html 表单向 MYSQL 插入多个输入