【问题标题】:How do I display this result set - it is not working [closed]如何显示此结果集-它不起作用[关闭]
【发布时间】:2011-09-21 08:58:36
【问题描述】:

我试图在我的主页上显示来自我的数据库的随机帖子,但是当我插入我的代码时没有显示任何内容。我如何获得以下代码来显示我的数据库中的随机行?

   <?php
require "connect2.php";

  $sql = "SELECT * FROM tablename
          ORDER BY RAND()";
while($row = mysql_fetch_array($sql)){
    $userid = $row["userid"];
    $user = $row["user"];
        $city = $row["city"];
        $desc = $row["description"];
        $title = $row["title"];
    $state = $row["state"];


echo"<h3><font face='helvetica'><font size='4'><b><font color='B80000'>$title</font></font></font></b> &nbsp;<font color='A0A0A0'><a href='profile.php?id=$userid'>$user</a></font>
<font face='helvetica'><font size='3'><br>&nbsp;$desc</font></font><br>

   <h3><font color='101010'> &nbsp;$city,$state&nbsp;<font color='A0A0A0'>$date</font>  </font><a href='bid.php?id=$userid'>Bids</a>";

?>

【问题讨论】:

  • 请将标题更改为更明确的内容。
  • 主题措辞不佳,投反对票。
  • 你甚至没有在$sql中执行你的SQL查询
  • 因为你没有执行查询(你只是给$sql分配了一个字符串)和echo一堆HTML。查看文档:php.net/manual/en/function.mysql-fetch-row.php
  • 我更新了它。完全忘记了这段时间

标签: php sql random


【解决方案1】:

您没有执行您的查询。您只是在创建一个恰好包含 SQL 语句的变量。这就像说$win = 'Win the lottery'; 并期望您的银行帐户存入大量资金。

$sql = 'SELECT ...';
$result = mysql_query($sql) or die(mysql_error());
$row = mysql_fetch_assoc($result);

$somedata = $row['somefield_from_your_database'];

echo "The value is $somedata";

是你需要的基本代码序列。

【讨论】:

    【解决方案2】:

    也许你应该执行你的查询:

    <?php
    require "connect2.php";
    
    $sql = "SELECT * FROM tablename ORDER BY RAND()";
    
    $result = mysqli_query($dbc,$query);
    
    if
    
     (mysqli_num_rows($result) > 0) {
            while ($row = mysqli_fetch_object($result)) {
        $html= <<<HTML 
    <h3><font face='helvetica'><font size='4'><b><font color='B80000'>$title</font></font></font></b> &nbsp;<font color='A0A0A0'><a href='profile.php?id=$userid'>$row->user</a></font>
        <font face='helvetica'><font size='3'><br>&nbsp;$row->desc</font></font><br>
    
       <h3><font color='101010'> &nbsp;$city,$state&nbsp;<font color='A0A0A0'>$row->date</font>  </font><a href='bid.php?id=$row->userid'>Bids</a>
    HTML;
         echo ($html);
        }
    }
    

    【讨论】:

      【解决方案3】:
      <?
      
          require_once("connect2.php");
      
          $sql = "SELECT * FROM tablename ORDER BY RAND()";
      
          while( $row = mysql_fetch_array($sql) )
          {
              $userid = $row["userid"];
              $user   = $row["user"];
              $city   = $row["city"];
              $desc   = $row["description"];
              $title  = $row["title"];
              $state  = $row["state"];
      
              if (!$firstname) 
              {
                  $firstname = $username;
              }
      
              echo "<h3><font face='helvetica'><font size='4'><b><font color='B80000'>$title</font></font></font></b> &nbsp;<font color='A0A0A0'><a href='profile.php?id=$userid'>$user</a></font><font face='helvetica'><font size='3'><br>&nbsp;$desc</font></font><br><h3><font color='101010'> &nbsp;$city,$state&nbsp;<font color='A0A0A0'>$date</font>  </font><a href='bid.php?id=$userid'>Bids</a>";
          }
      
      ?>
      

      【讨论】:

        【解决方案4】:
        select top 10 * from [tablename] order by newid()
        

        通过使用此查询,您可以获得随机记录...

        【讨论】:

        • 既然 sql 很挑剔,我会不会写成 SELECT top 10 * FROM table ORDER BY newid()
        • 是的,因为通过使用此查询,我们获取随机记录以显示广告横幅..
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2012-11-04
        • 1970-01-01
        • 2018-04-01
        • 1970-01-01
        • 2018-08-02
        • 2023-01-07
        • 1970-01-01
        相关资源
        最近更新 更多