显示2个表中不相关的数据

时间:2018-04-02 17:49:36

标签: php mysql

尝试从2个不同且基本不相关的表中显示数据。不希望它们加入,只是在选择框中看起来像这样的离散输出:

类别:来自table1的当前类别(此部分有效)

表2中的整个类别列表(正确的空选项标签数,未显示数据)

DB connection code:

    //DB CONNECTION//
    $dbcnx = mysqli_connect("localhost", $DBASEUSER, $DBASEPASSWORD, $DBASE);

    //Main Showcase

    $sql = "SELECT * FROM `dprods`";
//////HEADER in main page    
    <?php
    $ID=$_GET['ID'];
    $CAT=$_GET['cat'];
    ?>
   //////Main SECTION 
            <?php
    require "db_conn.php";    
    $sql2 = "SELECT * FROM $DBTABLE WHERE ID=$ID";
    $getinfo = mysqli_query($dbcnx, $sql2);
    $row = mysqli_fetch_assoc($getinfo);
    $PROD = $row['dtitle'];
    $PRICE = $row['dprice'];
    $PP = $row['dpplink'];


    echo "<tr> 
          <td width=\"12%\"> 
            <div align=\"right\"><b><font face=\"Arial, Helvetica, sans-serif\" size=2>Product 
              Category: &nbsp;&nbsp;</font></b></div>
          </td>
          <td colspan=2 width=\"88%\"><select name=\"dcat\"><option value=\"$CAT\">Current Category: $CAT</option>";
    $dcat = "SELECT * FROM 'dcat'";
    $getcat = mysqli_query($dbcnx, $dcat);
    $row2 = mysqli_fetch_assoc($getcat);
    while($row2 = mysqli_fetch_assoc($result))
    {    echo " <option value=\"".$row2["dcategory"]."\">".$row2["dcategory"]."</option>";
    }
    echo "".$row["dprice"]."</select>
        </tr>
        <tr> 
          <td width=\"12%\">&nbsp;</td>
          <td width=\"24%\">&nbsp;</td>
          <td width=\"64%\">&nbsp;</td>
        </tr>
        <tr> 
          <td width=\"12%\"> 
            <div align=\"right\"><b><font face=\"Arial, Helvetica, sans-serif\" size=2>Product 
              Title: &nbsp;&nbsp;</font></b></div>
          </td>
          <td width=\"24%\"> <b><font face=\"Arial, Helvetica, sans-serif\" size=2> 
            <input type=\"text\" name=\"Title\" value=\"".$row["dtitle"]."\" size=35 maxlength=25>
            </font></b><b><font face=\"Arial, Helvetica, sans-serif\" size=2> &nbsp;&nbsp;</font></b></td>
          <td width=\"64%\"><b><font face=\"Arial, Helvetica, sans-serif\" size=2>Price</font></b>: 
            &nbsp;&nbsp; <b><font face=\"Arial, Helvetica, sans-serif\" size=2> 
            <input type=\"text\" name=\"Price\" value=\"".$row["dprice"]."\" maxlength=10 size=20>
            </font></b></td>
        </tr>
        <tr> 
          <td width=\"12%\">&nbsp;</td>
          <td width=\"24%\">&nbsp;</td>
          <td width=\"64%\">&nbsp;</td>
        </tr>
        <tr> 
          <td width=\"12%\"> 
            <div align=\"right\"><font face=\"Verdana, Arial, Helvetica, sans-serif\" size=2><b>PayPal 
              Link:&nbsp;&nbsp;&nbsp;</b></font></div>
          </td>
          <td colspan=2><font face=\"Arial, Helvetica, sans-serif\"><b>http://www.paypal.com</b> 
            </font> 
            <input type=\"text\" name=\"PP\" value=\"".$row["dpplink"]."\" size=50>
            <font face=\"Arial, Helvetica, sans-serif\">Only put in what follows paypal.com</font></td>
        </tr>

    ";
    mysqli_close($dbcnx);
    ?>  

几个小时以来一直在研究这个问题,现在我非常困惑,狼疮诱发的瑞士奶酪大脑没有帮助。我想我非常接近,只是无法从第二张表中获取数据来显示。感谢任何建议,但请尽量保持简单。我在研究中看到的一些复杂代码让我更加困惑。谢谢!

2 个答案:

答案 0 :(得分:0)

尝试在您的选择查询中加入getcat,如下所示:

$dcat = "SELECT 'dcategory', 'getcat' FROM 'dcat'";

$getcat = mysqli_query($dbcnx, $dcat);

while($row2 = mysqli_fetch_assoc($getcat))
{
    echo " <option value=\"".$row2["getcat"]."\">".$row2["getcat"]."</option>";
}

echo "</select>"

您也可以使用$dcat = "SELECT * FROM 'dcat'";,但上述情况可能略高一些。

此外,我没有看到为此代码设置$result的位置while($row2 = mysqli_fetch_assoc($result))

看起来$result未设置,因此显然会给您带来不良后果。

您还在$row2 = mysqli_fetch_assoc($getcat);循环之外执行while,这将在进入循环之前抓取第一行。循环将从第二行开始。

请查看http://php.net/manual/en/mysqli-result.fetch-assoc.php

此外,您的脚本将受SQL注入的影响,如评论中所述。您需要修复它,以便尽可能安全。阅读评论中的链接,并确保您使用的是prepared statements

答案 1 :(得分:0)

adpro,您的帮助非常宝贵。我比我意识到的更困惑,你的意见帮助指出了我。我回去了我从头开始用一个干净的查询代码,我可以打印出来,用彩色的高升标记来跟踪变量。代码现在可以正常运行,我可以为其他可能需要澄清的人发帖。我很欣赏每个人关于sql注入的意见。我的目标是在使其变得更复杂之前先使用简单的功能。现在我可以添加保护来防止sql注入。

<?php
require "db_conn.php";    
$sql2 = "SELECT * FROM $DBTABLE WHERE ID=$ID";
$getinfo = mysqli_query($dbcnx, $sql2);
$row = mysqli_fetch_assoc($getinfo);
$PROD = $row['dtitle'];
$PRICE = $row['dprice'];
$PP = $row['dpplink'];


echo "<tr> 
      <td width=\"12%\"> 
        <div align=\"right\"><b><font face=\"Arial, Helvetica, sans-serif\" size=2>Product 
          Category: &nbsp;&nbsp;</font></b></div>
      </td>
      <td colspan=2 width=\"88%\"><select name=\"dcat\"><option value=\"$CAT\">Current Category: $CAT</option>";

    $sqlCAT = "SELECT * FROM dcat";

    if($resultCAT = mysqli_query($dbcnx, $sqlCAT)){

        if(mysqli_num_rows($resultCAT) > 0){

            while($rowCAT = mysqli_fetch_array($resultCAT)){

                    echo "<option value=\"".$rowCAT['dcategory']."\">".$rowCAT['dcategory']."</option>";
            }

            // Free result set

            mysqli_free_result($resultCAT);

        } else{
            echo "No records matching your query were found.";
        }

    } else{
        echo "ERROR: Could not able to execute $sqlCAT. " . mysqli_error($dbcnx);
    }

echo " </select>";

mysqli_close($dbcnx);
?>