程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了基于两个表中的值匹配,使用 MySQL 和 PHP 查询(带括号)导致输出我想要的 24 行 html 数据大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决基于两个表中的值匹配,使用 MySQL 和 php 查询(带括号)导致输出我想要的 24 行 html 数据?

开发过程中遇到基于两个表中的值匹配,使用 MySQL 和 php 查询(带括号)导致输出我想要的 24 行 html 数据的问题如何解决?下面主要结合日常开发的经验,给出你关于基于两个表中的值匹配,使用 MySQL 和 php 查询(带括号)导致输出我想要的 24 行 html 数据的解决方法建议,希望对你解决基于两个表中的值匹配,使用 MySQL 和 php 查询(带括号)导致输出我想要的 24 行 html 数据有所启发或帮助;

我在这里的 php、MysqL、HTML 查询和输出结果是前 24 行的输出,没有错误,没有使用 WHERE、JOIN、= 或 HAVING……但是第二批 24 行,我想要作为结果,将基于(表 b)b.ID(一行)具有(表 a)a.re​​cord(所有 24 行)而(表 b)B.USERNAME = $user-username(来自 getuser() 的变量) )。我迷失在定义 WHERE 语句的地方(见下文)。

b.ID 处的两行值为 $user2 读取 7(恰好是顺序生成的值),并为 $user1 读取 6(顺序低一个数字)。每个用户都将使用 Joomla 中的 BreezingForms 应用程序提交信息。 Breezing 表单将表单提交拆分为两个单独的表。他们自己的 Crosstec Joomla 背面功能几乎可以使用选择下拉菜单完成我想要的功能。 (也许我可以弄清楚如何借用该代码。)

我正在尝试获取我想要的“24 行数据”,这些数据作为登录用户的唯一值输入到数据库中,如 b.ID 和 B.USERNAME 所示,与 $user 相同-> 用户名如上。我的下一次提交会将 b.ID 和 a.record 增加到第 8 位。b.ID 是一行数据,a.record 是来自网络表单的 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 值,这些值预计会一直增加,并将它们与 $user->username 进行比较以生成正确的选择。

<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 子句时,它给了我 7 的那 24 行记录,如果我更改为 6,我会得到 6 的那 24 行。我希望该值在 b.ID 或 a 时递增.record 根据使用我的表单输入记录的用户名进行更改。我的表单在发送到表 a 的 24 行值和发送到表 b 的单行值中捕获了他们的用户名。

这是一个有点工作的 WHERE 子句:

   ->where($db->quotename('a.record') . ' liKE ' . $db->quote(7)) 

下一个 WHERE 子句给我返回数据的第一行(24 个中的 1 个),但这次它只产生基于登录用户的 a.value 的第一行,如 B.USERNAME 所示 - 只是不是给我所有 24 行:

   ->where($db->quotename('a.value') . ' = ' . $db->quote($user->userName))  

有人可以看一下并与我一起工作吗? 感谢新手!

" ¯\_(ツ)_/¯ "


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 编号会增加。

解决方法

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

SQL 语句

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 代码

$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');

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

大佬总结

以上是大佬教程为你收集整理的基于两个表中的值匹配,使用 MySQL 和 PHP 查询(带括号)导致输出我想要的 24 行 html 数据全部内容,希望文章能够帮你解决基于两个表中的值匹配,使用 MySQL 和 PHP 查询(带括号)导致输出我想要的 24 行 html 数据所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。