记录没有按升序排列

时间:2014-01-26 03:28:24

标签: php html

我有一个带有PHP代码的HTML页面,可以将数据插入MySQL数据库。数据保存到数据库中没有任何错误,但顺序不正确。

这是结构: screenshot of structure

这是数据库: screenshot of database

这是输出: screenshot of output

这是PHP代码:

<?php
$conn = mysql_connect("localhost","root","");
if(! $conn )
{
    die('Could not connect: ' . mysql_error());
}
$sql = 'SELECT num,question,choice1,choice2,choice3,choice4, answer FROM data order by num';

mysql_select_db('test');
$retval = mysql_query( $sql, $conn );
if(! $retval )
{
    die('Could not get data: ' . mysql_error());
}
while($row = mysql_fetch_assoc($retval))
{
    echo '<tr>';
    echo '<td> '.$row['num'].'.'.$row['question'].' <br/ >A.'.$row['choice1'].'<br />B.'.$row['choice2'].'<br />C.'.$row['choice3'].'<br />D.'.$row['choice4'].'<br />Answer.'.$row['answer'].'</td>';
    echo "<td text-align='center'><form action='proto2.php' method='post'>
          <input type='hidden' name='update' value=".$row['num']." />
          <input type='submit' value='Change' />
          </td></form> ";
    echo "<br/>";
    echo '</tr>';
}
mysql_close($conn);
?>

提取不一致,总是从11号开始。我只是不知道为什么11号和2号切换位置,有什么帮助吗?此外,我的数据库很奇怪,因为在1 2 3后,数字20出现,然后是4 5 6。

我甚至尝试了这段代码,但即使按数字或行检查,我仍然得到相同的结果

$conn = mysql_connect("localhost","root","");
if(! $conn )
{
    die('Could not connect: ' . mysql_error());
}

$sql = 'SELECT * FROM data ORDER BY  num ASC';

mysql_select_db('test');
$retval = mysql_query($sql);
$cntr = mysql_num_rows($retval);

mysql_close();
$conn = mysql_connect("localhost","root","");
if(! $conn )
{
    die('Could not connect: ' . mysql_error());
}
for($i = 1;$i<=$cntr+1;$i++)
{
    $result = mysql_query("SELECT num,question,choice1,choice2,choice3,choice4,answer FROM data WHERE num='".$i."'");
    while($row = mysql_fetch_assoc($result))
    {
        echo '<tr>';
        echo '<td> '.$row['num'].'.'.$row['question'].' <br/ >A.'.$row['choice1'].'<br />B.'.$row['choice2'].'<br />C.'.$row['choice3'].'<br />D.'.$row['choice4'].'<br />Answer.'.$row['answer'].'</td>';
        echo "<td text-align='center'><form action='proto2.php' method='post'>
              <input type='hidden' name='update' value=".$row['num']." />
              <input type='submit' value='Change' />
              </td></form> ";
        echo "<br/>";
        echo '</tr>';
    }
}

1 个答案:

答案 0 :(得分:2)

您的结果集按字母顺序排序num,而不是按数字排序。这很可能是因为您的num列在MySQL中设置为VARCHAR而不是INTEGER。在数据库中更改此项(使用phpMyAdmin等工具),您的结果应该正确排序。