【问题标题】:Array Results in PHPPHP 中的数组结果
【发布时间】:2013-08-06 09:03:48
【问题描述】:

是否可以限制从 MYSQL 数据库显示的结果?

目前结果显示在 html 表格中,如何只显示最新条目?

<?php
$con = mysql_connect("localhost","cl49-XXX","XXX");
if (!$con) 
{
  die('Could not connect: ' . mysql_error());
}
mysql_select_db("cl49-XXX", $con)or die("Unable to select database");

$result=mysql_query("SELECT * FROM products") or die('You need enter a category');

echo "<tr>"; // first row beginning
for ($i = 1; $i <= mysql_num_rows($result); $i++)
{
  $row = mysql_fetch_array($result);

  $prodname = $row['prodname'];
  $prodID = $row['prodID'];
  $catagory = $row['catagory'];

  echo "
  <td>$prodID</td>
  <td>$prodname</td>
  <td>$catagory</td>
  <td>
    <a href=deleteproduct.php?q=$prodID' class='btn mini red'>
    <i class='icon-trash'></i> Delete Item</a>
  </td>";

  echo "</tr><tr>"; // it's time no move to next row
}
echo "</tr>"; // last row ending
?>

【问题讨论】:

  • 您是否考虑过在 MySQL 查询中使用 LIMIT 和可能的 ORDER BY 子句?
  • 你能定义“最新”吗?您是存储时间戳还是具有自动增量 ID?
  • 这将为您提供 10 个最新产品,例如:$result=mysql_query("SELECT * FROM products order by ProdID desc limit 10")
  • 此外,您的 echo "" 和 echo "" 语句应该在 for 循环之外,除非您想在单个表格行中显示所有结果。
  • 把你的第一句话放到谷歌上,你就会得到答案......

标签: php html mysql arrays html-table


【解决方案1】:

只需将您的查询切换为这样的内容!

 $result=mysql_query("SELECT * FROM products LIMIT 0,10")or die('You need enter a catagory' );

LIMIT 0,10 将显示您数据库中的前 10 个结果。

您甚至可以按数据库中的特定元素对其进行排序。

 $result=mysql_query("SELECT * FROM products ORDER BY objectName LIMIT 0,10")or die('You need enter a catagory' );

更多 SQL 基本帮助:http://www.sqlcommands.net/

祝你好运!

【讨论】:

  • 你的密码是什么?将 objectName 替换为您要订购产品的行。
【解决方案2】:

首先,虽然您还是新手,但您应该研究 PDO/Prepared 语句而不是 mysql_ 函数。

此外,您可以为您的 SQL 执行此操作:

$result=mysql_query("SELECT * FROM products ORDER BY name DESC LIMIT 0,10")or die('You need enter a catagory ' );

'name' 是您希望对其进行排序的产品/行名称的名称

【讨论】:

  • 我很想用不安全的mysql PHP 查询来试验网站的数据库结构:)
  • 更改您要订购产品的行的“名称”。
【解决方案3】:

只需添加一个计数器,当计数器达到一个数字时使用:

break;

跳出循环。

例如

for ($i = 1; $i <= mysql_num_rows($result); $i++)
{
 if ($i==3) break;
}

当然你可以更好地限制循环本身:

使用:

for ($i = 1; $i <= 4; $i++)

或在 SQL 查询中使用 LIMIT 选项

【讨论】:

    【解决方案4】:

    您的问题由两部分组成。

    第一部分:Is it possible to limit the results shown from a MYSQL database?

    您可以通过在查询中使用limitword 来做到这一点。

    例子:

    mysql_query("SELECT * FROM products limit 1, 5");
    

    前面的代码说选择所有产品并从产品一开始,只显示5个产品。

    第二部分:how do I only show the newest entries ?

    您可以这样做,首先必须在您的产品表中创建名为date 的列,然后在添加新产品时,使用time() 函数将时间存储到date 列中。
    然后,当您想按最新产品显示产品订单时,可以使用order by 语句。

    例子:

    mysql_query("SELECT * FROM products order by date ASC limit 1, 5");
    

    要将这些词应用到您的代码中,只需

    1. 在您的产品表中添加新列并将其命名为date
    2. 然后更改将产品添加到产品表的查询以添加 使用 time() 函数到日期列的时间。
      INSERT INTO tableName(date) VALUES('".time()."');
    3. 通过修改查询来显示按最新排序的产品

      $result=mysql_query("SELECT * FROM products ORDER BY date ASC LIMIT 0, 15") or die('You need enter a category');

    【讨论】:

    • 谢谢,太好了,你能告诉我如何添加日期吗?我不确定?
    • 您可以使用time()函数添加日期/时间,例如:INSERT INTO tableName(date) VALUES('".time()."');
    猜你喜欢
    • 2012-02-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-17
    • 1970-01-01
    • 1970-01-01
    • 2019-03-13
    相关资源
    最近更新 更多