需要帮助从一个数据库表 - mysql_query拉入多列

时间:2011-03-24 18:47:01

标签: php mysql

下午所有,

一个非常快速的问题......一位朋友使用mysql_query为我设置了一个表单。自从他写这篇文章以来,我在数据库中添加了一个额外的列,我希望将其引入到表单中。

但是我似乎无法显示这个额外的列(标记为Currency)。我需要它的原因是下面的查询将拉回一个值和£符号。因为我不仅要显示£,还要显示€价格,我需要这个额外的列才能通过(显然我也必须从下面的回声中删除£)。

我已经尝试将额外的列(货币)添加到代码中,例如“选择房间,货币,价格来自Spa_Upgrades

但这没效果。

代码是:

 <?php 
            if (isset($id))
                {
                $query2 = mysql_query("SELECT Room, Price FROM Spa_Upgrades WHERE Spa_Upgrades.Spa_Id = '".$id."' AND Spa_Upgrades.Id = '".$pack."' order by Spa_Upgrades.Order");
                $rows = mysql_num_rows($query2);
                if($rows==0) {echo "disabled='disabled'/>";} 
                else
                    {
                    echo "/>";
                    echo "<option value='Default'>Please Select</option>";
                    for($i=0; $i<$rows; $i++)
                        {
                        $result2 = mysql_fetch_array($query2);
                        echo "<option value='".$result2[0]."&nbsp;&pound;".$result2[1]."pp'>$result2[0]&nbsp;&pound;$result2[1]pp</option>";
                        }
                    }
                }

如果有人能解决这个问题,那就非常感激!

谢谢, 杂色

3 个答案:

答案 0 :(得分:1)

按如下方式更改查询:

SELECT Room, Price, Currency FROM Spa_Upgrades ...

更改echo循环内for行的行:将&pound;替换为$result2[2],只要它出现在哪里。 (或者,如果Currency列不包含货币符号的HTML实体,则将&pound;替换为适当的代码,以从Currency列条目中获取符号。)

答案 1 :(得分:0)

  • 使用mysql_fetch_assoc()代替mysql_fetch_array()
  • 一个好的做法是将数据检索与显示逻辑分开

试试这个:

<?php

$results = array();

if (isset($id))
{
  $resource = mysql_query("SELECT room, currency, price FROM Spa_Upgrades
    WHERE Spa_Upgrades.Spa_Id = '".intval($id)."' AND Spa_Upgrades.Id = '".intval($pack)."'
    order by Spa_Upgrades.Order");

  while($row = mysql_fetch_assoc($resource))
    $results[] = $row;
}

?>
<select name="..." <?php echo (count($results) > 0 ? '' : 'disabled') ?>>
  <option value="Default">Please Select</option>
  <?php
    foreach($results as $result)
    {
      $value = $result['room'].' '.$result['currency'].$result['price'].'pp';
      echo '<option value="'.htmlspecialchars($value).'">'.htmlspecialchars($value).'</option>'."\n";
    }
  ?>
</select>

答案 2 :(得分:0)

您还需要将列添加到输出中......我也会切换到关联数组,否则如果添加一个列而不是最后一个,则必须更改所有索引。

        if (isset($id))
            {
            $query2 = mysql_query("SELECT Room, Price, Currency FROM Spa_Upgrades WHERE Spa_Upgrades.Spa_Id = '".$id."' AND Spa_Upgrades.Id = '".$pack."' order by Spa_Upgrades.Order");
            $rows = mysql_num_rows($query2);
            if($rows==0) {echo "disabled='disabled'/>";} 
            else
                {
                echo "/>";
                echo "<option value='Default'>Please Select</option>";
                for($i=0; $i<$rows; $i++)
                    {
                    $result2 = mysql_fetch_assoc($query2);
                    $value = $result2['Room'] . '&nbsp;' . $result2['Currency'].$result2['Price'].'pp';

                    echo sprintf('<option value="%s">%s</option>', $value, $value);
                    }
                }
            }