【问题标题】:While loop won't show first row虽然循环不会显示第一行
【发布时间】:2013-04-19 03:07:50
【问题描述】:

我遇到了一个简单的问题。我用谷歌搜索并发现了很多资源,但在我看来没有任何用处。

在这里,我运行了一个查询并将其作为选择菜单输出。但是值的第一行没有显示出来。

<?php
$query = mysql_query("SELECT * FROM `subcategory` ORDER BY `Category_id`");             
while($row = mysql_fetch_array($query)){
$subcategory_title = $row['Subcategory_name'];
$subcategory_id = $row['Subcategory_id'];
$subcategory_id = $subcategory_id*10;

$selectMenu .= "<option value='$subcategory_id'>$subcategory_title</option>";
}
?>

输出在

<select name='' class=''>
<option disabled='disabled'>Choose a Topic</option>
<?php echo $selectMenu; ?>
</select>

我回显了$subcategory_title$subcategory_id,这里第一行值显示是否在列表菜单中。另一个脚本中的相同代码可以正常工作。我不明白。问题是什么?

【问题讨论】:

  • 只运行mysql中的sql时,是否得到了所有的值?
  • Please, don't use mysql_* functions 在新代码中。它们不再被维护并且是officially deprecated。看到红框了吗?改为了解准备好的语句,并使用 pdomysqli
  • 我不能肯定地告诉你原因,但似乎你应该把你的 $subcategory_id = $subcategory_id*10;在循环结束时
  • +1 到 @hjpotter92 传播这个词!
  • 您好!无需在标题中加上“已解决”,因为“检查”系统已经在完成这项工作!欲了解更多信息,请参阅meta.stackexchange.com/questions/172501/…

标签: php mysql while-loop option


【解决方案1】:

代码链接:http://pastebin.com/iGqitNe7

试试这个...

<?php

 $qidInfo = "<tr>
                <td width='20%'>Exam Topic:</td>
                <td width='80%'><label>
                <select class='exam_name' name='exam_name' id='exam_name'>
                <option disabled='disabled'>Choose a Topic</option>".$selectMenu."
            </select>...rest of the string...";
?>

【讨论】:

  • 不是这样...我已经在代码顶部初始化$selectMenu...这里我只是展示我的部分代码。
  • 试试这个... 将其更改为 "string.....".$selectMenu."rest of the string..."
【解决方案2】:

为什么不采用 RIGHT 这样的 PDO 方式呢? : (可能有一些未经测试的语法错误)

$sql = "SELECT * FROM `subcategory` ORDER BY `Category_id`";
$query = $pdo->prepare($sql);
$query->execute();

if($query) {
   $row = $query->fetchAll(PDO::FETCH_ASSOC);
   $selectmenu = "";
   foreach ($row as $value) {
        $selectMenu .= "<option value=<?php echo $value['subcategory_id']*10 ?>><?php echo $value['subcategory_title'] ?></option>";

    }
}

这是未经测试的代码,但我认为这应该可行。顺便说一句,祝您好运。

有关设置 PDO 的帮助,请参阅 this answer. 您问自己为什么要使用 PDO?正如上面的 cmets 所述,对于新代码,应不惜一切代价避免使用 Mysql_ 函数,因为它们被 PHP 社区看不起,并将在 php 5.5 时被删除。

阅读更多关于 PHP PDO here

【讨论】:

  • $query-&gt;fetch(PDO::FETCH_ASSOC) 应改为 $query-&gt;fetchAll(PDO::FETCH_ASSOC)
猜你喜欢
  • 1970-01-01
  • 2015-09-14
  • 1970-01-01
  • 2017-03-16
  • 2013-03-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多