【问题标题】:PHP While wont return first rowPHP 虽然不会返回第一行
【发布时间】:2013-05-11 20:30:32
【问题描述】:

我的 while 语句有问题,它不会显示第一行,我不知道为什么,如果有任何帮助,将不胜感激。

 <?php
      $user = $_SESSION['username'];
      $result = mysql_query("SELECT *FROM bookwrite WHERE username = '$user' ", $connection);


    if (mysql_fetch_array($result)==0){
        $class = "hideMe";
        $firstnameResult = mysql_query("SELECT * FROM users WHERE username = '$user' ", $connection);

        $row2 = mysql_fetch_array($firstnameResult);
        echo "<div class=\"platOptions welcome\"><div class=\"welcomeinfo\"><h1>Welcome!</h1>Welcome to Little Quill, ".$row2["firstName"].". We see you are new to the platform. To get started by adding your first post please click the \"New Entry\" button below <a class=\"newentryBTN\" href=\"newEntry.php\">New Entry</a></div></div>";

    } else {
        $class = "";
        while ($row = mysql_fetch_array($result)) {
            echo nl2br("<li class=\"editable\" id=\"".$row["id"]."\">"."<div class=\"entryInfo clearfix\">"."<div class=\"statusWrapper\"><div class=\"status\"></div><div class=\"statusIcon\"></div></div>"."<h1>".$row["post_title"]."</h1>"."<div class=\"timeline-date entryDate\">".$row["post_date"]."</div>"."</div>"."<p contentEditable=\"true\">".$row["post_details"])."</p><a class=\"deleteBTN\"href='delete.php?id=".$row["id"]."'>x</a></li>";
         }


    }


 ?>

【问题讨论】:

标签: php sql if-statement while-loop row


【解决方案1】:

第一个结果被 mysql_fetch_array 消费,所以当你开始你的循环时,你正在消费第二个项目。试试这段代码,我基本上是在循环结束时分配下一个值。

另外,我 100% 同意 Jason McCreary,我会评论说您当前的查询受到 SQL 注入的影响。但是,这应该可以解决您的第一个问题,帮助您朝着最终正确的解决方案迈出一小步。

<?php
$user = $_SESSION['username'];
$result = mysql_query("SELECT * FROM bookwrite WHERE username = '$user' ", $connection);

$bookwrite_row = mysql_fetch_array($result);

if($bookwrite_row) {
    while($bookwrite_row) {
        echo nl2br("<li class=\"editable\" id=\"".$row["id"]."\">"."<div class=\"entryInfo clearfix\">"."<div class=\"statusWrapper\"><div class=\"status\"></div><div class=\"statusIcon\"></div></div>"."<h1>".$row["post_title"]."</h1>"."<div class=\"timeline-date entryDate\">".$row["post_date"]."</div>"."</div>"."<p contentEditable=\"true\">".$row["post_details"])."</p><a class=\"deleteBTN\"href='delete.php?id=".$row["id"]."'>x</a></li>";

        $bookwrite_row = mysql_fetch_array($result);
    }
} else {
    $class = "hideMe";
    $firstnameResult = mysql_query("SELECT * FROM users WHERE username = '$user' ", $connection);

    $row2 = mysql_fetch_array($firstnameResult);
    echo "<div class=\"platOptions welcome\"><div class=\"welcomeinfo\"><h1>Welcome!</h1>Welcome to Little Quill, ".$row2["firstName"].". We see you are new to the platform. To get started by adding your first post please click the \"New Entry\" button below <a class=\"newentryBTN\" href=\"newEntry.php\">New Entry</a></div></div>";
}

【讨论】:

  • 太棒了,非常感谢您的快速响应,似乎成功了!你是一个救生员。
  • 不客气!如果它确实解决了您的问题,请不要忘记选择此响应作为答案:)
  • 是的,我已经完成了,由于时间限制,它不允许我立即执行,但现在应该归功于您!再次感谢!
【解决方案2】:
    if (mysql_num_rows($result)==0){
        $class = "hideMe";
...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-07-22
    • 2015-09-14
    • 1970-01-01
    • 2019-08-21
    • 2017-03-16
    • 2015-02-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多