Я хочу выделить все из определенного запроса. Если echo $ res, я получаю только одну из строк. Если я изменил второй аргумент mysql_result, я могу получить 2-й, 2-й и т. Д., Но я хочу, чтобы все они были повторены один за другим. Как я могу превратить результат mysql во что-то, что я могу использовать?
Я пытался:
$query="SELECT * FROM MY_TABLE"; $results = mysql_query($query); $res = mysql_result($results, 0); while ($res->fetchInto($row)) { echo "<form id=\"$row[0]\" name=\"$row[0]\" method=post action=\"\"><td style=\"border-bottom:1px solid black\">$row[0]</td><td style=\"border-bottom:1px solid black\"><input type=hidden name=\"remove\" value=\"$row[0]\"><input type=submit value=Remove></td><tr></form>\n"; }
Обычный подход будет примерно таким:
$query="SELECT * FROM MY_TABLE"; $results = mysql_query($query); while ($row = mysql_fetch_array($results)) { echo '<tr>'; foreach($row as $field) { echo '<td>' . htmlspecialchars($field) . '</td>'; } echo '</tr>'; }
Расширение принятого ответа:
function mysql_query_or_die($query) { $result = mysql_query($query); if ($result) return $result; else { $err = mysql_error(); die("<br>{$query}<br>*** {$err} ***<br>"); } } ... $query = "SELECT * FROM my_table"; $result = mysql_query_or_die($query); echo("<table>"); $first_row = true; while ($row = mysql_fetch_assoc($result)) { if ($first_row) { $first_row = false; // Output header row from keys. echo '<tr>'; foreach($row as $key => $field) { echo '<th>' . htmlspecialchars($key) . '</th>'; } echo '</tr>'; } echo '<tr>'; foreach($row as $key => $field) { echo '<td>' . htmlspecialchars($field) . '</td>'; } echo '</tr>'; } echo("</table>");
Выгоды:
Используя mysql_fetch_assoc (вместо mysql_fetch_array без второго параметра для указания типа), мы избегаем получать каждое поле дважды, один раз для числового индекса (0, 1, 2, ..) и второй раз для ассоциативного ключа.
Показывает имена полей в виде строки заголовка таблицы.
Показывает, как получить как column name
($ key), так и value
(поле $) для каждого поля, как итерацию по полям строки.
Обернуто в <table>
поэтому отображается правильно.
(OPTIONAL) умирает с отображением строки запроса и mysql_error, если запрос завершается с ошибкой.
Пример:
Id Name 777 Aardvark 50 Lion 9999 Zebra
$result= mysql_query("SELECT * FROM MY_TABLE"); while($row = mysql_fetch_array($result)){ echo $row['whatEverColumnName']; }