2013-05-17 2 views
0

У меня есть быстрый вопрос. У меня есть оператор while, который работает, но печатает все в таблице дважды. Я новичок в PHP и MySQL и понятия не имею, почему. Может ли кто-нибудь помочь указать мне в правильном направлении?Отображение таблицы MySQL в PHP

while($row = mysql_fetch_array($result)) 
{ 
    echo "<tr>"; 

    // $row is array... foreach(..) puts every element 
    // of $row to $cell variable 
    foreach($row as $cell) 
     echo "<td>$cell</td>"; 
     $linkID= $row['linkID']; 
    echo '<td><a href="update.php?linkID=' . $linkID. '">Update Status</a></td>'; 

    echo "</tr>\n"; 
} 
+2

вы используете foreach через некоторое время – underscore

+3

Существует ** больше поддержки ** для 'mysql_ *' функций, они [** официально устарели **] (https://wiki.php.net/rfc/ mysql_deprecation), ** больше не поддерживается ** и будет [** удален **] (http://php.net/manual/en/function.mysql-connect.php#warning) в будущем. Вы должны обновить свой код с помощью [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/msqli), чтобы обеспечить функциональность вашего проекта в будущем. – Schleis

+0

Если данные, как известно, не являются html-safe, вам следует скрыть '$ cell', используя [' htmlspecialchars'] (http://php.net/manual/en/function.htmlspecialchars.php). – grossvogel

ответ

0
$row = mysql_fetch_array($result); 
    echo "<tr>"; 

    // $row is array... foreach(..) puts every element 
    // of $row to $cell variable 
    foreach($row as $cell) 
     echo "<td>$cell</td>"; 
     $linkID= $row['linkID']; 
    echo '<td><a href="update.php?linkID=' . $linkID. '">Update Status</a></td>'; 

    echo "</tr>\n"; 

попробовать это

+0

Спасибо за ваш быстрый ответ! При этом я все равно получаю все то же самое (все двойное, за исключением ссылки на статус обновления). –

2

ваш код является правильным, единственная проблема заключается в том, что mysql_fetch_array взять второй параметр, и есть три варианта (MYSQL_BOTH, MYSQL_ASSOC, MYSQL_NUM) для второго параметра.

по умолчанию он установлен в MYSQL_BOTH, если вы его не укажете, кто даст вам два массива, один с числовыми индексами и другие с ассоциативными индексами. и это является источником вашей проблемы

вы можете просто фиксируем, что при добавлении этого Param как:

while($row = mysql_fetch_array($result, MYSQL_ASSOC)){ 
..... 

MYSQL_NUM также работать, если вы хотите.

Примечание:

Это расширение устаревшим PHP 5.5.0, и будут удалены в будущем. Вместо этого следует использовать расширение MySQLi или PDO_MySQL.

По этой причине вы должны использовать расширение pdo, это лучше, и вы оцените его.

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