Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. C++. Мастер-класс в задачах и примерах. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум MySQL

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Выводит результат запросв по два раза.
 
 автор: Бамси   (16.11.2005 в 02:45)   письмо автору
 
 


<?php
$link 
mysql_connect("127.0.0.1""root""toor")
   or die (
"Could not connect to MySQL");

 
mysql_select_db ("libraly")
   or die (
"Could not select database");
 
 
$result mysql_query ("Select * from test")
  or die (
"Query failed");

// printing HTML result

print "<table border=1>";
while (
$line mysql_fetch_array($result)) {
  print 
"<tr>";
  while(list(
$col_name$col_value) = each($line)) {
    print 
"<td>$col_value</td>";
  }
  print 
"</tr>";
}
print 
"</table>";
?>


Почему результат выводится по два раза, тоесть...
Вот что у меня получается из этого запроса:


1 1  name     name     2 2       13 13
2 2  name1   name1  5 5        13 13
3 3  name2   name2  78 78   56 56


Первый два числа это ID вторые два Name... и т.д.

Почему вот он выводит по 2 раза результат, как исправить?

   
 
 автор: Loki   (16.11.2005 в 09:14)   письмо автору
 
   для: Бамси   (16.11.2005 в 02:45)
 

Дело в том, что в массиве $line данные содержаться в двух экземплярах: с числовыми индексами и с текстовыми.
Попробуйте вывести:

print_r($line);

и сами все увидите.

   
 
 автор: HoLsT   (16.11.2005 в 10:06)   письмо автору
 
   для: Loki   (16.11.2005 в 09:14)
 

Дак массив вроде ассоциативный.(mysql_fetch_assoc). Там только ассоциативные индексы. Или я не прав???

   
 
 автор: Евгений Петров   (16.11.2005 в 13:33)   письмо автору
 
   для: HoLsT   (16.11.2005 в 10:06)
 

Функция mysql_fetch_array dhpdhfoftn результат в двух экземплярах:
1) Имя поля в таблице
2) Индекс в массиве
Используйте вместо mysql_fetch_array() функцию mysql_fetch_row()

   
 
 автор: cheops   (16.11.2005 в 13:36)   письмо автору
 
   для: HoLsT   (16.11.2005 в 10:06)
 

Замените строку
<?php
while ($line mysql_fetch_array($result)) {
?>

на
<?php
while ($line mysql_fetch_array($resultMYSQL_ASSOC)) {
?>

или
<?php
while ($line =mysql_fetch_assoc($result)) {
?>

   
 
 автор: Бамси   (16.11.2005 в 20:35)   письмо автору
 
   для: Loki   (16.11.2005 в 09:14)
 

Извините, но мне это амало о чем говорит :/
Можете подробней рассказать, я плохо очень знаю php.

Cheops
Что значит : MYSQL_ASSOC.

   
 
 автор: cheops   (17.11.2005 в 02:52)   письмо автору
 
   для: Бамси   (16.11.2005 в 20:35)
 

Функция mysql_fetch_array() может принимать второй необязательный параметр. Константа MYSQL_ASSOC требует, чтобы в результате был только ассоциативный массив, а не смешанный, как выводится по умолчанию.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования