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
Форумы портала PHP.SU :: Версия для печати :: SELECT работает как INSERT, с чего бы вдруг?
Форумы портала PHP.SU » » Вопросы новичков » SELECT работает как INSERT, с чего бы вдруг?

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

1. Терри - 20 Мая, 2012 - 17:20:09 - перейти к сообщению
Есть таблица 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>
2. Green - 20 Мая, 2012 - 17:32:22 - перейти к сообщению
А если так?:
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>
3. Терри - 20 Мая, 2012 - 17:38:46 - перейти к сообщению
Он всё-равно добавляет.
4. Green - 20 Мая, 2012 - 17:43:12 - перейти к сообщению
Кроме этого кода, есть еще что-то на странице? Выкладывайте полный код, эта простая выборка в цикле, она не может добавлять записи... Однако
Ладно если бы на выводе были дубли, но это - вообще странно... Очень...
5. Muxa - 20 Мая, 2012 - 17:45:01 - перейти к сообщению
Green пишет:
if(mysql_num_rows($link) == TRUE)

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

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>
7. redNek - 20 Мая, 2012 - 17:50:46 - перейти к сообщению
Терри пишет:
Он всё-равно добавляет.

Надо остальной код смотреть. SELECT по определению не может записи добавлять или еще как-то изменять БД.
У вас должен быть INSERT, который срабатывает тогда, когда не надо.
8. Терри - 20 Мая, 2012 - 17:53:47 - перейти к сообщению
С этой страничкой всё в порядке вроде бы .................... где-то раньше надо искать причину ........... но и там у меня просто SELECT
9. redNek - 20 Мая, 2012 - 17:56:04 - перейти к сообщению
Muxa пишет:

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

Про правило лжи слышал? В PHP же нет жесткой типизации. Так что все норм, если мы в запросе что-то получили, то пишем это в переменную, если пустой запрос получился ничего не делаем.
10. Muxa - 20 Мая, 2012 - 17:56:19 - перейти к сообщению
ctrl+F - INSERT
(Добавление)
redNek пишет:
Про правило лжи слышал? В PHP же нет жесткой типизации. Так что все норм, если мы в запросе что-то получили, то пишем это в переменную, если пустой запрос получился ничего не делаем.
слышал) просто первый раз вижу такое, обычно пишут >0 а не TRUE.. думаю а вдруг)
11. Green - 20 Мая, 2012 - 18:00:02 - перейти к сообщению
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!"); #ОК.

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

Улыбка
12. Терри - 20 Мая, 2012 - 18:00:26 - перейти к сообщению
Нашла причину ... Улыбка
Я и не думала там искать, но больше негде было ... Улыбка

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

Green, я уже понял, спасибо Улыбка просто не видел такого варианта записи) молодой я еще, зеленый..
14. redNek - 20 Мая, 2012 - 18:04:26 - перейти к сообщению
Терри пишет:
Нашла причину ... Улыбка
Я и не думала там искать, но больше негде было ... Улыбка

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

И что там было? Подробней можно, а то интересно же.
15. IllusionMH - 20 Мая, 2012 - 18:20:40 - перейти к сообщению

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

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

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

 

Powered by ExBB FM 1.0 RC1