Различные вопросы по PHP и MySQL

99.73K
.
L!MP
# ДоХтор (26.03.2014 / 20:42)
прочитал статью об этой функции - там речь идёт об уязвимости:
Там идет речь не о уязвимости при использовании unserialize, а о опастности не явного приведения типов, при сравнении.

=== в помощь.
.
# L!MP (18.04.2014 / 14:36)
Там идет речь не о уязвимости при использовании unserialize, а о опастности не явного приведения типов, при сравнении.

=== в помощь.
Да, я уже понял )
.
Люди берегите воду - пейте пиво...
Хотел спросить по поводу rand на mysql, где будет нагрузка меньше ?
$res = mysql_fetch_array(mysql_query("SELECT * FROM `table` WHERE `id` > '0' ORDER BY RAND() LIMIT 1"));

или такой вариант
$num = mysql_num_rows(mysql_query("SELECT `id` FROM `table`"));
$rnd = rand(1, $num);
$res = mysql_fetch_row(mysql_query("SELECT * FROM `table` WHERE `id` = '" . $rnd . "' LIMIT 1"));
.
ValekS
Ей 25
venom, первый вариант однозначно не советую. Если записей в таблице десятка 2, то всё будет хорошо. Но если будет больше тысячи записей, то нагрузка будет немаленькая и думать будет долго.
Второй способ не знаю... Но думаю лучше первого. А вообще если погуглить можно найти способы оптимизации первого способа, где всё выполняется в MySQL без участия пхп.
.
Люди берегите воду - пейте пиво...
ValekS, Вот именно, что второй вариант и советуют , другого способа пока не видел ...
.
venom, Еще не забывай что во втором варианте могут быть пустые ИДы, бывает же что удаляешь запись, вот и все, может быть ошибка, короче первый вариант удобнее, но нагрузка большая, второй вариант быстрее и меньшая нагрузка но могут быть проблемы с удалеными записями
.
Люди берегите воду - пейте пиво...
# valik619 (26.04.2014 / 19:11)
но могут быть проблемы с удалеными записями
Об этом я знаю , и по этому база заполняется в ручную без веб интерфейса (админке) , так что думаю с этим проблем не будет..
.
venom, Тогда юзай второй вариант, а если планируешь добавить админку то у меня есть решение, если надо будет поищу
.
Люди берегите воду - пейте пиво...
# valik619 (26.04.2014 / 19:22)
у меня есть решение, если надо будет поищу
Поищи...
.
venom, Даже вот так будет лучше$num = mysql_results(mysql_query("SELECT count(*) FROM `table`"),0);
$rnd = rand(1, $num);
Всего: 7969