【问题标题】:PHP array to unordered listPHP数组到无序列表
【发布时间】:2017-10-31 09:06:26
【问题描述】:

我希望有一个简单的问题,但我找不到任何完整的问题答案。

我有一个从 MySQL 返回的数组,看起来像这样

mysql> select c.comment, d.name, m.ounces from drink d 
       inner join mix m on m.drinkID = d.ID
       inner join cocktail c on m.cocktailID = c.id
       where c.id =5;
+----------------------+------------+--------+
| comment              | name       | ounces |
+----------------------+------------+--------+
| Long Island Iced Tea | Vodka      |   0.75 |
| Long Island Iced Tea | Gin        |   0.75 |
| Long Island Iced Tea | Rum        |   0.75 |
| Long Island Iced Tea | Tequila    |   0.75 |
| Long Island Iced Tea | Sour Mix   |   2.00 |
| Long Island Iced Tea | Cola       |   1.00 |
| Long Island Iced Tea | Triple Sec |   1.00 |
+----------------------+------------+--------+

我试图让 PHP 生成一个类似于下面的无序列表。

<div class="jumbotron">
    <h2>
      Long Island
    </h2>
    <p>
      <ul>
        <li>0.5 oz Vodka</li>
        <li>0.5 oz Rum</li>
        <li>0.5 oz Gin</li>
        <li>0.5 oz Tequila</li>
        <li>0.5 oz Triple Sec</li>
        <li>1 oz Sweet and Sour Mix</li>
        <li>1 oz cola </li>
      </ul>

我正在尝试这个:

    $ingredient = "select 
       c.comment, d.name, m.ounces 
       from drink d 
       inner join mix m on m.drinkID = d.ID
       inner join cocktail c on m.cocktailID = c.id 
       where c.id = 4";
    //print($ingredient);
    $result = mysql_query($ingredient);

<?php foreach($result as $results): ?>
    <li><? echo $results ?></li>
<?php endforeach; ?>

从这里:StackOverflow 但无法弄清楚为什么我不断收到来自 PHP 的 HTTP 500 错误。

任何帮助或指导将不胜感激!

谢谢!

【问题讨论】:

  • 不要使用mysql_* 函数。它们自 v5.5(2013 年 6 月)起已被弃用,自 v7.0(2015 年 12 月)起已被删除。而是将mysqli_*PDO 函数与prepared statementsbound parameters 一起使用。
  • 通常 500 是语法错误
  • 谢谢。我正在重用另一篇文章中的代码。 mysqli_* 函数可以直接找到并替换还是它们有很大不同?
  • 检查你在li里面的php open close tag,和mysqli的程序非常相似。面向对象看起来有点不同,但差别不大。
  • 当您遇到内部错误时,您应该检查日志文件以查看导致错误的原因。还要检查你是否启用了 php 短标签。

标签: php html mysql arrays


【解决方案1】:

mysql_query() 返回一组行,而不是单个行

<?php while ($row = mysql_fetch_assoc($result)): ?>
  <li> <?= $row['ounces'] ?> oz <?= $row['name'] ?></li>
<?php endwhile ?>

【讨论】:

  • 希望 mysql_query 返回错误。而已。一点也不差。
  • 希望在循环结果之前测试错误。我想我应该补充一下
【解决方案2】:

您正在使用很可能禁用的短标签。在下面试试这个

&lt;li&gt;&lt;?= $results['ounces'] . ' oz '. $results['name']?&gt;&lt;/li&gt;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-26
    • 1970-01-01
    • 1970-01-01
    • 2011-09-02
    • 1970-01-01
    • 2014-09-12
    • 1970-01-01
    • 2017-11-12
    相关资源
    最近更新 更多