首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MySQL和PHP query (带括号),根据两个表中的值匹配,输出24行html数据

使用MySQL和PHP query (带括号),根据两个表中的值匹配,输出24行html数据
EN

Stack Overflow用户
提问于 2021-06-05 04:07:52
回答 1查看 64关注 0票数 1

我的PHP、MySQL、HTML查询和输出在这里得到了前24行的输出,没有使用WHERE、JOIN、=或HAVING ...但第二批共24行,我希望作为结果,将基于(表b)用户名(一行)具有(表a)用户名(所有24行),而(表b) b.username =$user- b.id (来自getuser()的变量)。我迷失在定义where语句的地方(见下文)。

b.id中的两行值为$user2读取7(恰好是顺序生成的值),为$user1读取6(顺序中较低一个数字)。每个用户都将使用Joomla中的BreezingForms应用程序提交信息。微风表单将表单提交拆分为两个单独的表。他们自己的Crosstec Joomla backside函数使用选择下拉菜单几乎可以做我想要的事情。(也许我可以想出如何借用这些代码。)

我正在尝试获取我想要的"24行数据“,这些数据作为登录用户的唯一值输入到数据库中,如上面的b.id和b.username所示,这与$ user ->username相同。我的下一次提交将把b.id和a.record增加到第8位。b.id是一行数据,a.record是来自webform的24行完全不同的数据。

完成这个查询后,我希望每个用户都有自己的Joomla文章页面,该页面将返回最近的24行数据(facileforms将最新的数据放在表a和表b的底部)。对于在b.username和$ user ->username之间匹配的任何给定用户,以a.record、a.title、a.value中的哪24行将被发送到html部分为线索。

我使用两个不同的用户名进行测试,如果我输入'7‘而不是'b.id’,我可以得到表a中的24行,其中a.record是(7),但这种硬编码违背了目的。我希望获得动态值来查看用户名,并将它们与$ $db ->用户名进行比较,以生成正确的select。

代码语言:javascript
复制
<p>
<?php 
$user = JFactory::getUser(); echo "<p>Username: {$user->username} • User ID: {$user->id} </p>";  
$db = JFactory::getDbo(); 
$query = $db->getQuery(true); 
$query 
   ->from($db->quoteName('#__facileforms_subrecords', 'a'), ($db->quoteName('#__facileforms_records', 'b')))  
   ->select($db->quoteName(array('a.record', 'a.title', 'a.value')), ($db->quoteName(array('b.id', 'b.username'))))  
   ->where( I am lost in defining conditions, see below )
   ->order('a.id ASC') 
   ->setLimit('24');  
$db->setQuery($query); 
$results = $db->loadObjectList(); 
?>
<table class="table table-striped well">
<div align="left">
   <tr>
            <th><h2>Record</h2></th>
            <th><h2>Title</h2></th>
            <th><h2>Value on File</h2></th>
  </tr> 
<?php foreach($results as $result) { ?>
    <tr>
          <th><?php echo $result->record; ?></th>
          <th><?php echo $result->title; ?></th>
          <td><?php echo $result->value; ?></td>
    </tr>  
<?php  }  ?>
</div>
</table>
</p>

当我使用它作为WHERE子句时,它给我的24行记录的值是7,如果我更改为6,我得到的是24行的6。我希望当b.id或a.record的值根据使用我的表单输入记录的用户名发生变化时递增。我的表单捕获他们发送到表a的24行值和发送到表b的单行值中的用户名。

下面是一个有效的WHERE子句:

代码语言:javascript
复制
   ->where($db->quoteName('a.record') . ' LIKE ' . $db->quote(7)) 

接下来的WHERE子句返回了第一行数据( 24行中的第1行),但这一次它只返回了基于登录用户的第一行a.value,如b.username所示-只是没有给出全部24行:

代码语言:javascript
复制
   ->where($db->quoteName('a.value') . ' = ' . $db->quote($user->username))  

有没有人可以过来看看,和我一起工作?新手的感谢!

代码语言:javascript
复制
" ¯\_(ツ)_/¯ "


Table a
+-----------+------------+---------+
|  Record   |   Title    |  Value  |
+-----------+------------+---------+
|     8     |  Username  |  Value  | <- Row 1
+-----------+------------+---------+
|     8     |  Point 1   |  Value  | <- Row 2
+-----------+------------+---------+
|     8     |  Point 2   |  Value  | <- Row 3
+-----------+------------+---------+
Up to 24 rows as per setLimit. 24 new rows arrive at each submit form. 


Table b
+-----------+------------+
|    id     |  username  |
+-----------+------------+
|     6     |  Username1 |  <- User 1 Row 1
+-----------+------------+
|     7     |  Username2 |  <- User 2 Row 25
+-----------+------------+
|     8     |  Username3 |  <- User 3 Row 50 and growing by 24 rows
+-----------+------------+

行id号随着表单的提交和用户名的捕获而递增。

EN

回答 1

Stack Overflow用户

发布于 2021-06-05 08:26:02

使用联接而不是对两个表使用from。

SQL语句

代码语言:javascript
复制
SELECT a.`record`, a.`title`, a.`value`
FROM `#__facileforms_records` b
JOIN `#__facileforms_subrecords` a
    ON a.`Record` = b.`id`
WHERE b.`id` = 8
ORDER BY a.`id`
LIMIT 24;

Joomla PHP代码

代码语言:javascript
复制
$query
    ->select($db->quoteName(array('a.record', 'a.title', 'a.value')))
    ->from($db->quoteName('#__facileforms_records', 'b'))
    ->join('LEFT',$db->quoteName('#__facileforms_subrecords', 'a'). 'ON ' . $db->quoteName('a.Record') . ' = ' . $db->quoteName('b.id'))
    ->where($db->quoteName(('b.id') . ' = ' . '8')
    ->order($db->quoteName('a.id') . ' ASC')
    ->limit('24');

注意:代码未测试-它可能包含一些拼写错误。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67843405

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档