ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

  #11  
Старый 10.04.2009, 20:39
Аватар для Gifts
Gifts
Reservists Of Antichat - Level 6
Регистрация: 25.04.2008
Сообщений: 827
Провел на форуме:
2769640

Репутация: 1304


По умолчанию

Если эти самые 30 записей получаются таким методом. То проблема не в количестве строк, а в реализации
PHP код:
$q=mysql_fetch_array(mysql_query('SELECT * FROM '.$table.' WHERE user_id='.$g['user_id'].' LIMIT 1')); 
 
Ответить с цитированием

  #12  
Старый 11.04.2009, 17:57
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

Да.... Спасибо!
 
Ответить с цитированием

  #13  
Старый 11.04.2009, 18:24
Аватар для Gar|k
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

эм ну скромно добавлю посоветую вернее... почитай внимательно документацию по SQL запросам очень много интересного.

Ваще базы данных эт наука ) со своей теорией (в нете можно многое найти)

ну а чисто полезные советы:
если ты делаешь SELECT * FROM но используешь тока например поле user_id
это очень плохой тон тк базе да и памяти срипта потребуется больше времени на обработку чем если бы ты сделал SELECT user_id FROM

очень часто нужно узнать количество полей там или подсчитать ченить
начинающие программисты делают так

SELECT * FROM и потом смотрят mysql_num_rows или ваще цикл $cnt++ ))

в MySQL есть такая интересная штука как count()

PHP код:
function rows($che,$tab,$par='')
    {
    
$w='';
    if(
$par<>''){$w='where';}

    
$sql=mysql_query("select count($che) as \"cnt\" from $tab $w $par");
    
$row=mysql_fetch_array($sql,MYSQL_ASSOC);
    
mysql_free_result($sql);
    
    return 
$row['cnt'];
    } 
заметь я указываю аргумент у mysql_fetch_array потомучто без него функция возращяет 2 массива один с именами другой с цифрами типа $row[0], $row[id] + mysql_free_result($sql) - освобождает память от уже ненужных данных

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

Ну и не забывай о безопасности
всегда значения передаваемые в WHERE пиши в кавычках типа WHERE id='1' это спасет тебя если на серверы включены magic_quotes_gpc типа id=1' OR 1=1/*

ВСЕ входящиее переменные особено $_GET нужно проверять и явно указывать их тип (спасет от подстав типа ?page[]=2)

например так

$id=preg_replace("/\D/","",(int)$_GET['id']);

Удаче, товарищь! )
 
Ответить с цитированием

  #14  
Старый 11.04.2009, 18:36
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

Ооо... есть над чем думать.... ! +++++++ =)

Цитата:
всегда значения передаваемые в WHERE пиши в кавычках
эм.. нагрузки не дадут 'лишние' ковычки?
 
Ответить с цитированием

  #15  
Старый 11.04.2009, 19:51
Аватар для Gar|k
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

Лишних кавычек не бывает )))
пример

where id=$id / ?id=2-1 / id=2-1 (результ id=1)
where id='$id' / ?id=2-1 / id='2-1' (результ ??? а результом будет id=2)


PHP код:
<?php

$sqlq
=mysql_connect('localhost','root');
mysql_select_db('test');

function 
sql($zap){
    echo 
$zap."<br>";
$sql=mysql_query($zap) or die(mysql_error()); 
    
$row=mysql_fetch_array($sql,MYSQL_NUM); 


    echo 
$row[0]." ".$row[2]."<br>";
    
mysql_free_result($sql);
    }

$id=$_GET['id'];

sql("select * from gal where id=$id");
sql("select * from gal where id='".$id."'");


mysql_close($sqlq);

?>
еще заметь die(mysql_error()) - так делать можно только на стадие дебага ... хакир ваще не должен знать че происходит
даже отсутсвие каких либо выводимых данных признак того что ошибка есть, поэтому нужно обязон делать проверки типа

if(mysql_num_rows() > 0)
else { $id=1 ; }

а лучше ваще перенаправления куданить на главную или к списку там тем незнаю чего ) меня лично это очень добивает потомучто приходится возвращатся на зад и тестить дальше ))))

Последний раз редактировалось Gar|k; 11.04.2009 в 20:03..
 
Ответить с цитированием

  #16  
Старый 11.04.2009, 22:59
Аватар для VDShark
VDShark
Участник форума
Регистрация: 01.02.2007
Сообщений: 286
Провел на форуме:
804931

Репутация: 526
По умолчанию

Gar|k "Лишних кавычек не бывает )))"

Лишние кавычки конечно же бывают, ибо тогда производится неявное преобразование типов, что на больших объемах данных может дать заметное замедление. Так что необходим смотреть на это дело со стороны безопасности - необходимы ли они в конкретном случае или нет.
 
Ответить с цитированием

  #17  
Старый 11.04.2009, 23:13
Аватар для GreenBear
GreenBear
наркоман с медалью
Регистрация: 07.05.2005
Сообщений: 3,704
Провел на форуме:
19975136

Репутация: 4536


Отправить сообщение для GreenBear с помощью ICQ
По умолчанию

используй индексы! у меня из 200к рандомно 20 рядов берет за 0.02 секунд!
 
Ответить с цитированием

  #18  
Старый 12.04.2009, 13:12
Аватар для rcc0023
rcc0023
Участник форума
Регистрация: 03.07.2008
Сообщений: 177
Провел на форуме:
644324

Репутация: 11
По умолчанию

А как использовать (организовать, создать) индексы?
 
Ответить с цитированием

  #19  
Старый 12.04.2009, 15:23
Аватар для Gar|k
Gar|k
Постоянный
Регистрация: 20.03.2009
Сообщений: 564
Провел на форуме:
991929

Репутация: 395


По умолчанию

Ну я понимаю это так

таблица
id text

id=primary key, auto_increment (писал по памяти)

ну и все select text from table where id=5

хотя я могу ошибатся я пока теорию мало изучал может еше чам че замудреное есть )
 
Ответить с цитированием
Ответ



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перехват Gsm пакетов SNIFF Сотовый фрикинг 16 27.12.2009 22:25
WebScarab - профессиональный инструмент для анализа защищённости веб-приложений Kuzya Авторские статьи 5 09.04.2009 21:54
Посимвольный перебор в базах данных на примере MySQL LoFFi Чужие Статьи 5 30.04.2007 05:05
Обнаружение Sql инъекций в Oracle, часть вторая k00p3r Чужие Статьи 0 13.06.2005 11:26
Внедрение Sql кода с завязанными глазами, часть 2 k00p3r Чужие Статьи 0 12.06.2005 20:45



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ