Php 如何从MySQL数据库中检索一行并仅显示包含大于零的值的列

Php 如何从MySQL数据库中检索一行并仅显示包含大于零的值的列,php,mysql,while-loop,Php,Mysql,While Loop,我在MySQL数据库中有一个名为quotes的表。此表包含一个名为quote_id的列,我使用select查询检索quote_id与正在编辑的quote id匹配的数组 "SELECT * FROM quotes WHERE quote_id = '$quote_id'"; 表中的其余列包含按产品代码标记的各种产品 另一个名为items的表包含每个产品,其产品代码为型号、说明和价格 每次创建新报价时,都会使用唯一的报价ID将其插入表中。每列下面的值是报价所需的数量 我试图实现的是使用查询从

我在MySQL数据库中有一个名为quotes的表。此表包含一个名为quote_id的列,我使用select查询检索quote_id与正在编辑的quote id匹配的数组

"SELECT * FROM quotes WHERE quote_id = '$quote_id'";
表中的其余列包含按产品代码标记的各种产品

另一个名为items的表包含每个产品,其产品代码为型号、说明和价格

每次创建新报价时,都会使用唯一的报价ID将其插入表中。每列下面的值是报价所需的数量

我试图实现的是使用查询从数据库检索特定行,并且只显示大于0的值

例如:

正如您所看到的,我能够实现这一点,但未显示的表格行会影响行之间的间距

我用于每个表行的if语句如下所示:

    <tr>
        <td>
             <?php if ($kx_t7765x >0 ){ echo "KX-T7765";} ?>
        </td>
        <td>
             <?php if ($kx_t7765x >0 ){ echo "Doorphone";} ?>
        </td>
        <td>
             <?php if ($kx_t7765x >0 ){ echo $kx_t7765x;} ?>
        </td>
    </tr>


我相信一定有一种更简单的方法来实现这一点,而不是为所需的每一个表行进行编码,我相信使用while语句将是正确的方法。

首先,这个数据库是一团乱。只要花一个小时的时间,你就能使它更合理。应该有一个数据透视表将引号链接到项目,而不是每个项目都有一个单独的列。每次决定销售新商品时,都必须重新生成整个表?那不是

直接问题的简单答案是使
元素有条件,而不是
元素的内容

<?php if ($kx_t7765x > 0): ?>
<tr>
    <td>KX-T7765</td>
    <td>Doorphone</td>
    <td><?=$kx_t7765x?></td>
</tr>
<?php endif; ?>

KX-T7765
门铃

实际上,所有这些表单元格也应该从items表中动态输入。

警告:您完全可以使用参数化的prepared语句,而不是手动生成查询。它们由或提供。永远不要相信任何形式的输入!即使您的查询仅由受信任的用户执行。为什么不简单地限制SQL查询?@Dharman我正在研究限制SQL查询。检索我需要的行很容易。但我正在努力理解如何仅检索值大于0的特定列。我已经研究了选择查询中的每一列作为产品,然后使用havingvalue>0。老实说,这对我来说都是新鲜事,但我不认为这能起作用。我还研究了使用和/或,但从逻辑上讲,我认为这也不起作用。。我的所有搜索结果都引用了返回值大于0的行的查询。不是列。请告诉我正确的方向。哪些列必须大于0?只有一个还是全部?@Dharman,我试图从每一列中检索值,不包括值大于0的quote_id列。这将在数量列的报价表中使用(例如,提供给潜在客户的报价)。因此,显示值等于0的行项目是没有意义的。谢谢。我担心数据库的结构是个问题。我将研究如何正确地构造数据库和使用透视表。如果这是一项正在进行的工作,那么您真的希望使用像Laravel这样的现代框架重新开始。值得花时间学习。如果它是遗留代码,你应该考虑雇佣一些人来更新它(或者开始阅读并自己做!)谢谢你的建议。这实际上是我自己的项目,我从零开始。我以前没有开发经验,我所知道的都是自学的,所以我会马上开始研究拉威尔。