【问题标题】:PHP WHILE loop mysteriously not producing any outputPHP WHILE 循环神秘地没有产生任何输出
【发布时间】:2011-08-27 17:24:08
【问题描述】:

先代码,后解释:

$result = mysql_query("INSERT INTO messages (...) VALUES (...)") or die(mysql_error());
            $rowID = mysql_insert_id();         
            if($result) {                                   
                $query = mysql_query("
                SELECT ... LIMIT 1");

                while ($row = mysql_fetch_array($query)) :
                    $message_id = stripslashes($row["m_id"]);
                    $message_postedby = stripslashes($row["u_name"]);
                    $message_text = stripslashes($row["m_text"]);
                    $date = date('F d, Y \a\t g:iA', strtotime($row["m_date"]));
                    ?>
                <div class="wall_message" id="<?= $message_id ?>">
                    <div class="author"><?= $message_postedby ?></div>
                    <div class="message"><?= $message_text ?></div>
                    <div class="date"><?= $date ?></div>
                </div>
                <?php
                endwhile;
                } ?>

我在做什么:

  1. 将新行插入数据库
  2. 在变量 $rowID 中存储插入行的 ID
  3. 如果插入成功,则查询数据库以检索该行以及其他表中的任何其他相关信息
  4. 将行中的值存储在变量中
  5. 打印包含该信息的 div

所有这些都是从一个 jQuery 函数调用的,所以我希望我的所有 HTML 都将被返回,但在 WHILE 循环内没有返回任何内容。我可以在它之前和之后回显文本,我可以很好地看到它,但是循环内的任何内容都不会打印,我只是看不到我的错误。也没有出现任何错误。

谢谢。

【问题讨论】:

  • 第 1 行的 SQL 后面缺少引号。

标签: php mysql loops while-loop


【解决方案1】:

mysql_fetch_array() 不接受查询,它接受资源(结果)。

$result = mysql_query($query);
while ($row = mysql_fetch_assoc($result)) {

如果您只是从结果中访问关联键,那么您应该使用 mysql_fetch_assoc() 来代替。

【讨论】:

  • 在他的代码中,$query 的意思是 $result,因为它的名字不正确 :)
  • 他使用了mysql_fetch_array($query)和$query = mysql_query(""),所以$query是一个结果资源,而不是一个查询字符串。
猜你喜欢
  • 2022-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-02
  • 1970-01-01
  • 1970-01-01
  • 2018-03-02
  • 2016-03-29
相关资源
最近更新 更多