我有一个带有PHP代码的HTML页面,可以将数据插入MySQL数据库。数据保存到数据库中没有任何错误,但顺序不正确。
这是结构:
这是数据库:
这是输出:
这是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>';
}
}
答案 0 :(得分:2)
您的结果集按字母顺序排序num
,而不是按数字排序。这很可能是因为您的num
列在MySQL中设置为VARCHAR而不是INTEGER。在数据库中更改此项(使用phpMyAdmin等工具),您的结果应该正确排序。