Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: SELECT работает как INSERT, с чего бы вдруг?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Описание: Я просто сильно удивлена
Терри
Отправлено: 20 Мая, 2012 - 17:20:09
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Есть таблица model с полями id_model, id_marka, model.

На данный момент просто решила отобрать все записи id_marka=126.
Но происходит что-то странное.
Допустим таблица model имела 2659 записей, так после того, как я вызываю эту страницу, где прописан такой код, у меня почему-то таблица model растет, соответственно и отобранных записей больше. Каждое обновление добавляет 2659 записей. Если б специально захотела бы так сделать, наверное и не получилось бы.

Очень странно, если бы я использовала где-то INSERT, то я бы не удивлялась этому, а здесь простой SELECT.

Что происходит с SELECT? Почему так катастрофически растет база? Разве в коде что-то не так?


PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. $ss="";
  3.  
  4. $query="SELECT * FROM `model` WHERE `id_marka`=126";
  5.    
  6.     if(!$link=mysql_query($query)) $err.="Server error";
  7.     else {
  8.         while($row=mysql_fetch_array($link)) {
  9.             $ss.='<li>'.$row['model'].'</li>';
  10.     }
  11. }
  12. ?>
  13.  
  14. <div >
  15.     <ul>
  16.         <?=$ss?>
  17.     </ul>
  18. </div>
 
 Top
Green
Отправлено: 20 Мая, 2012 - 17:32:22
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




А если так?:
CODE (htmlphp):
скопировать код в буфер обмена
  1. <?PHP
  2.         $ss = FALSE;
  3.          
  4.         $query = "SELECT * FROM `model` WHERE `id_marka` = '126'";
  5.         $link  = mysql_query($query) OR die("Server error");
  6.        
  7.         if(mysql_num_rows($link) == TRUE) {
  8.                 while($row = mysql_fetch_assoc($link)) {
  9.                                 $ss .= '<li>' . $row['model'] . '</li>';
  10.                 }
  11.         }
  12. ?>
  13.  
  14. <div>
  15.     <ul>
  16.         <?PHP echo($ss); ?>
  17.     </ul>
  18. </div>
 
 Top
Терри
Отправлено: 20 Мая, 2012 - 17:38:46
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Он всё-равно добавляет.
 
 Top
Green
Отправлено: 20 Мая, 2012 - 17:43:12
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




Кроме этого кода, есть еще что-то на странице? Выкладывайте полный код, эта простая выборка в цикле, она не может добавлять записи... Однако
Ладно если бы на выводе были дубли, но это - вообще странно... Очень...
 
 Top
Muxa
Отправлено: 20 Мая, 2012 - 17:45:01
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




Green пишет:
if(mysql_num_rows($link) == TRUE)

что это? о_О если число извлеченных рядов равно true?
(Добавление)
то есть получается если целое равно булеву? Не понял
 
 Top
Терри
Отправлено: 20 Мая, 2012 - 17:50:38
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




На этой страничке только лишь этот код записан.

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2.  
  3.             $ss = FALSE;
  4.              
  5.             $query = "SELECT * FROM `model` WHERE `id_marka` = '126'";
  6.             $link  = mysql_query($query) OR die("Server error");
  7.            
  8.             if(mysql_num_rows($link) == TRUE) {
  9.                     while($row = mysql_fetch_assoc($link)) {
  10.                                     $ss .= '<li class="mmtt">' . $row['model'] . '</li>';
  11.                     }
  12.             }
  13.      
  14.  
  15. /*
  16. $ss="";
  17.  
  18. $query="SELECT * FROM `model` WHERE `id_marka`=126";
  19.    
  20.     if(!$link=mysql_query($query)) $err.="Server error";
  21.     else {
  22.         while($row=mysql_fetch_array($link)) {
  23.             $ss.='<li class="mmtt">'.$row['model'].'</li>';
  24.     }
  25. }*/
  26. ?>
  27.  
  28. <div class="content" id="mazd">
  29. <div class="contsub">
  30.  
  31. <h1>MAZDA</h1>
  32.  
  33. <div class="catcol">
  34.     <ul>
  35.             <?PHP echo($ss); ?>
  36.     </ul>
  37. </div>
  38.  
  39. </div>  
  40. </div>
 
 Top
redNek
Отправлено: 20 Мая, 2012 - 17:50:46
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Терри пишет:
Он всё-равно добавляет.

Надо остальной код смотреть. SELECT по определению не может записи добавлять или еще как-то изменять БД.
У вас должен быть INSERT, который срабатывает тогда, когда не надо.
 
 Top
Терри
Отправлено: 20 Мая, 2012 - 17:53:47
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




С этой страничкой всё в порядке вроде бы .................... где-то раньше надо искать причину ........... но и там у меня просто SELECT
 
 Top
redNek
Отправлено: 20 Мая, 2012 - 17:56:04
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Muxa пишет:

то есть получается если целое равно булеву? Не понял

Про правило лжи слышал? В PHP же нет жесткой типизации. Так что все норм, если мы в запросе что-то получили, то пишем это в переменную, если пустой запрос получился ничего не делаем.
 
 Top
Muxa
Отправлено: 20 Мая, 2012 - 17:56:19
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)




ctrl+F - INSERT
(Добавление)
redNek пишет:
Про правило лжи слышал? В PHP же нет жесткой типизации. Так что все норм, если мы в запросе что-то получили, то пишем это в переменную, если пустой запрос получился ничего не делаем.
слышал) просто первый раз вижу такое, обычно пишут >0 а не TRUE.. думаю а вдруг)
 
 Top
Green
Отправлено: 20 Мая, 2012 - 18:00:02
Post Id



Частый гость


Покинул форум
Сообщений всего: 214
Дата рег-ции: Апр. 2012  
Откуда: Кисловодск


Помог: 9 раз(а)




Muxa пишет:
Green пишет:
if(mysql_num_rows($link) == TRUE)

что это? о_О если число извлеченных рядов равно true?
(Добавление)
то есть получается если целое равно булеву? Не понял

Например, если записей в таблице 100, mysql_num_rows вернет 100, так?
PHP:
скопировать код в буфер обмена
  1. var_dump(100 == TRUE ? "OK!" : "NO OK!"); #ОК.


Если записей нету, mysql_num_rows вернет 0, так?
PHP:
скопировать код в буфер обмена
  1. var_dump(0 == FALSE ? "OK!" : "NO OK!"); #ОК.

Значит цикл не выполнится.

Улыбка
 
 Top
Терри
Отправлено: 20 Мая, 2012 - 18:00:26
Post Id



Гость


Покинул форум
Сообщений всего: 86
Дата рег-ции: Май 2012  


Помог: 0 раз(а)




Нашла причину ... Улыбка
Я и не думала там искать, но больше негде было ... Улыбка

config.php для конфигурации базы, чуть перестроить ее надо, сейчас совсем отключила ее.
 
 Top
Muxa
Отправлено: 20 Мая, 2012 - 18:04:17
Post Id



Частый гость


Покинул форум
Сообщений всего: 247
Дата рег-ции: Март 2012  
Откуда: Россия, Тверь


Помог: 5 раз(а)





Green, я уже понял, спасибо Улыбка просто не видел такого варианта записи) молодой я еще, зеленый..
 
 Top
redNek
Отправлено: 20 Мая, 2012 - 18:04:26
Post Id



Новичок


Покинул форум
Сообщений всего: 19
Дата рег-ции: Май 2012  
Откуда: Минск


Помог: 0 раз(а)




Терри пишет:
Нашла причину ... Улыбка
Я и не думала там искать, но больше негде было ... Улыбка

config.php для конфигурации базы, чуть перестроить ее надо, сейчас совсем отключила ее.

И что там было? Подробней можно, а то интересно же.

(Отредактировано автором: 20 Мая, 2012 - 18:09:26)

 
 Top
IllusionMH
Отправлено: 20 Мая, 2012 - 18:20:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)





раз уж на то пошло, то лучше

просто заменить на

Подмигивание

(Отредактировано автором: 20 Мая, 2012 - 18:21:57)

 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB