2014-01-26 4 views
0

У меня есть HTML-страница с кодом PHP, которая вставляет данные в базу данных 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>'; 
    } 
} 
+0

Запустили ли вы свой SQL-запрос в phpmyadmin? Каков был порядок результата? – tgun926

+0

это заказ от 1 2 3 20 19 4 5 6 Я не знаю, как это произойдет – Willingtolearn

+0

Распечатайте таблицу и опубликуйте ее как отредактируйте на свой вопрос - это может помочь дать вам ответ – tgun926

ответ

2

Ваш набор результатов упорядочивается num в алфавитном порядке, а не численно. Это, скорее всего, потому, что ваш столбец num установлен как VARCHAR вместо INTEGER в MySQL. Измените это в своей базе данных (с помощью инструмента, такого как phpMyAdmin), и ваши результаты должны быть упорядочены правильно.

+0

мой тип данных для num задан для целого числа, и у меня все еще есть та же проблема, и он является автоматическим приращением, потому что его первичный ключ ... но когда я посмотрел в моей базе данных, кажется, что он не в численном порядке – Willingtolearn

+0

Не могли бы вы предоставить нам экспорт или скриншот структуры базы данных в исходном ответе? – scottsanders

+0

Я только что воссоздал вашу базу данных в своей локальной среде, и выполнение следующего запроса работает отлично для меня: 'SELECT * FROM data ORDER BY num' – scottsanders

Смежные вопросы