2013-06-13 3 views
0

Мне нужна небольшая помощь. Этот код пропускает первую строку, я не знаю причины. Я много искал в Интернете, но все говорят о mysql_fetch_array ($ results), но в моем коде нет ничего подобного.Php и mysql, отсутствует первая строка

Вы нашли что-то неточное в этом коде?

<?php 

// create query 
$query = "SELECT * FROM products"; 

// execute query 
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 

$id = mysql_result($result,$i,"id"); 
$name = mysql_result($result,$i,"name"); 
$imageurl = mysql_result($result,$i,"imageurl"); 
$price = mysql_result($result,$i,"price"); 
$quantity = mysql_result($result,$i,"quantity"); 

// see if any rows were returned 
if (mysql_num_rows($result) > 0) { 
    // yes 
    // print them one after another 
    echo "<table class='table table-hover'>"; 
    echo "<thead> 
       <tr> 
        <th>ID</th> 
        <th>Name</th> 
        <th>Image</th> 
        <th>Price</th> 
        <th>Quantity</th> 
       </tr> 
       </thead>"; 
    while($row = mysql_fetch_array($result)) { 
     echo "<tr>"; 
     echo "<td>".$id."</td><td>".$name."</td><td><a href='".$imageurl."' class='fancybox fancybox-effects-e' title='".$name."'><img src='".$imageurl."' alt='".$name."'></a></td><td>€ ".$price."</td><td>".$quantity."</td>"; 
     echo "</tr>"; 
    } 
    echo "</thead>"; 
    echo "</table>"; 
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
} 

// free result set memory 
mysql_free_result($result); 

// close connection 
mysql_close($connection); 

?> 
+0

'SELECT * FROM' продуктов Ваш запрос .. как вы знаете, что должно быть ваш первый ряд, когда вы не используете какой-либо порядок? – Nikola

+0

В строке, где вы назначаете '$ id', вы ссылаетесь на' $ i'. Где было присвоено значение $ i? –

+0

Где вы инициализируете '$ i'? Вы инициализируете '$ id', но никогда не переустанавливаете его, когда вы просматриваете свои результаты, поэтому он будет выводить только одно значение. (так же для других четырех переменных) – andrewsi

ответ

3

Примечание это сообщение на странице PHP для mysql_result

Calls to mysql_result() should not be mixed with calls to other functions that deal with the result set. 

Это будет продвигать указатель записи мимо первого результата, так что ваши призывы mysql_fetch_array собираются быть смещена на один.

Во всяком случае, я думаю, что вы после

<?php 

// create query 
$query = "SELECT * FROM products"; 

// execute query 
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error()); 

// see if any rows were returned 
if (mysql_num_rows($result) > 0) { 
    // yes 
    // print them one after another 
    echo "<table class='table table-hover'>"; 
    echo "<thead> 
       <tr> 
        <th>ID</th> 
        <th>Name</th> 
        <th>Image</th> 
        <th>Price</th> 
        <th>Quantity</th> 
       </tr> 
       </thead>"; 
    while($row = mysql_fetch_array($result)) { 
     echo "<tr>"; 
     echo "<td>".$row["id"]."</td><td>".$row["name"]."</td><td><a href='".$row["imageurl"]."' class='fancybox fancybox-effects-e' title='".$row["name"]."'><img src='".$row["imageurl"]."' alt='".$row["name"]."'></a></td><td>€ ".$row["price"]."</td><td>".$row["quantity"]."</td>"; 
     echo "</tr>"; 
    } 
    echo "</thead>"; 
    echo "</table>"; 
} 
else { 
    // no 
    // print status message 
    echo "No rows found!"; 
} 

// free result set memory 
mysql_free_result($result); 

// close connection 
mysql_close($connection); 

?> 
+0

'$ id' и' $ name' также должны быть элементами '$ row':' $ row ['id'] 'и' $ row ['name'] '. –

+0

@NilsWerner спасибо, что я пропустил эти – Orangepill