来自数组的回声值

时间:2016-01-18 11:14:35

标签: php mysql

我可能完全以错误的方式解决这个问题,但我已经完成了一半工作!

我有一张桌子(价格),其中包含每个包装的“包装”参考编号和“价格”。

我试图在同一页面上回应每个包装的不同价格,但似乎有点丢失!

例如。第1组是12英镑,第2组是17英镑。我希望能够在同一页面的不同位置回显这些值。

到目前为止,我有......

 <?php 
    $con = mysql_connect('*****'); 
    mysql_select_db('****');
    $query = "SELECT * FROM prices WHERE pack=2";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result)){ 
    ?>

然后我......

<?php echo $row['price'];}?>

在我希望价格出现的页面下方。

如果我只需要该页面上第2包的价格,这很好,但如果我想在同一页面上有不同的价格,那就不行了。

我意识到查询中的WHERE pack = 2正在控制回显的值,但我需要在同一页面上回显价格WHERE pack = 1和pack = 2。

有什么方法可以从查询中删除WHERE,并且有一些ECHO WHERE我需要在页面上显示价格。

希望这一切都有意义,有人可以指出我正确的方向。

干杯, 布鲁斯

3 个答案:

答案 0 :(得分:0)

我建议使用PDO,但你可以这样做:

$query = "SELECT * FROM prices WHERE pack=1 OR pack=2 ORDER BY pack ASC";
$result = mysql_query($query);
$prices = array();
while($row = mysql_fetch_array($result)){ 
    $prices[$row['pack']] = $row['price'];
}

然后,$ price [1]将包含pack = 1的价格,$ price [2]将包含pack = 2的价格;

如果您需要的不仅仅是包1和2,请使用IN子句:

$query = "SELECT * FROM prices WHERE pack IN (1, 2, 5, 7) ORDER BY pack ASC";

答案 1 :(得分:0)

您应该将价格放在页面内的任何位置,而不是在循环中将循环放在外面

<?php 
    $con = mysql_connect('*****'); 
    mysql_select_db('****');
    $query = "SELECT * FROM prices WHERE pack=2";
    $result = mysql_query($query);
    while($row = mysql_fetch_array($result))
    { ?>
          // place your HTML
         Price <input type="text" value="<?= $row['price'] ?>" />
   <?php } ?>

答案 2 :(得分:0)

您应该使用mysqli_connect()而不是旧版mysql_connect(),因为函数已被弃用。

尝试这种方式: -

 $link = mysqli_connect("host","username","password","db_name") or die("Error " . mysqli_error($link)); 

 $query = "SELECT * FROM prices WHERE pack IN ( 1,2 )"; 
 // If you want all pack prices then use below query
 // $query = "SELECT * FROM prices"; 

   //execute the query. 

 $result = $link->query($query); 

   //display information: 

 while($row = mysqli_fetch_array($result)) { 
    echo $row['pack'] .'='. $row['price'] . "<br>"; 
 }