Никита К.
1594 сообщения
#15 лет назад
Значит вы будете писать так:
$query = mysql_query("SELECT * FROM `users` WHERE `id` = $_GET"); 

?
Мне кажется, что всё таки надо писать как минимум так:
$query = mysql_query("SELECT * FROM `users` WHERE `id` = '".intval($_GET)."'");
Дмитрий Васильковский
756 сообщений
#15 лет назад
Запрос в БД прямо с параметров GET нечего доброго не сулит! Проверку нужно делать обязательно!
Никита К.
1594 сообщения
#15 лет назад
Вот я и спрашивал как её лучше организовать
$id = intval($_GET); или $id = (int) $_GET;
Дмитрий Васильковский
756 сообщений
#15 лет назад
Я в свое время делал експеременты... Писал два варианта одного и тогоже кода... и ставил таймеры! И смотрел какой быстрее обработаеться!
Тем самым набирался опыта в оптимизации кода!
Но у каждой стороны есть обратная сторона... Порой говнокод обрабатываеться намного быстрее! Так что тут по ситуации смотреть нужно!

Цитата ("Anexroid"):
Вот я и спрашивал как её лучше организовать
$id = intval($_GET); или $id = (int) $_GET;

Лучше сделать проверку, а не переобразововать в интеджер!
Дмитрий Васильковский
756 сообщений
#15 лет назад
Результаты с таймерами:
intval = 3.6000000000036E-5
int = 5.0000000000328E-6
Сергей Д.
326 сообщений
#15 лет назад
Цитата ("VOPLI"):
Лучше сделать проверку, а не переобразововать в интеджер!

Человек спрашивает какой из двух вариантов выбрать, а Вы говорите, что лучше проверку делать...
Разные ситуации есть, иногда оптимальнее в инт преобразовать, иногда - сначала проверить. От реализуемого алгоритма зависит. А Вы вот так сразу: "лучше это а не то"...

Сам я пользуюсь вариантом intval(...); Какой из этих способов оптимальнне - вообще не задумывался. Никогда не было такой ситуации, чтобы такие места приходилось оптимизировать :-)
Дмитрий Васильковский
756 сообщений
#15 лет назад
Цитата ("oren"):
Человек спрашивает какой из двух вариантов выбрать, а Вы говорите, что лучше проверку делать

Это из цикла-"У меня сгорели колонки, какие лучше кодаки поставить чтоб они заработали?"
Я даю ответы на все вопросы
Ну и советы по ситуации!
Сергей Д.
326 сообщений
#15 лет назад
Цитата ("VOPLI"):
Цитата ("oren"):
Человек спрашивает какой из двух вариантов выбрать, а Вы говорите, что лучше проверку делать

Это из цикла-"У меня сгорели колонки, какие лучше кодаки поставить чтоб они заработали?"
Я даю ответы на все вопросы
Ну и советы по ситуации!

Нет, это не "из этого цикла". Совсем другая логическая схема, и у человека был корректный вопрос, без "предоположений по умолчанию", как в примере с колонками.
Максим Антонюк
21 сообщение
#15 лет назад
Оффтопик

Цитата ("VOPLI"):
Лучше сделать проверку, а не преобразовывать в интеджер!

Лично я не понимаю и никогда не понимал зачем проверять на инт то, что ЗАВЕДОМО должно быть в инт.
Лично я не вижу в этом смысла. Прибегаю к "кастрации" в инт. =))
Впрочем это офтоп и очередная тема для холивара. =D
Никита К.
1594 сообщения
#15 лет назад
Вот именно, зачем проверять тип - если проще преобразовать))
Зачем писать
if(is_int($a))
{

} else
{

}

если мы можем просто написать $a = intval($a);

Зачем усложнять?

Может всё так кто-нибудь ответит на вопрос?
Николай Т.
205 сообщений
#15 лет назад
Цитата ("VOPLI"):
Результаты с таймерами:
intval = 3.6000000000036E-5
int = 5.0000000000328E-6

любопытно посмотреть на код вашего не верного бенчмарка
Николай Т.
205 сообщений
#15 лет назад
Цитата ("Anexroid"):
Вот именно, зачем проверять тип - если проще преобразовать))
Зачем усложнять?
Может всё так кто-нибудь ответит на вопрос?

возникает логичный вопрос к вам зачем приводить к типу Цитата ("Anexroid"):
$query = mysql_query("SELECT * FROM `users` WHERE `id` = '".intval($_GET)."'";
если требуется избавиться от кавычек и прочих "вредных" символов в данном случае.
Евгений О.
2989 сообщений
#15 лет назад
Если тип переменной не может меняться во время выполнения, то лучше всего изначально привести ее тип к нужному и потом уже использовать с учетом конкретного типа. А вот если тип может меняться, то тут уж без проверки типов не обойтись.

P.S. Тут советовали заменять выражения типа != на <>. Без учета типов это может привести к забавным результатам.
Дмитрий Васильковский
756 сообщений
#15 лет назад
Цитата ("e1it3"):
любопытно посмотреть на код вашего не верного бенчмарка


<?php

$start=microtime();
$id = intval($_GET);
$end=microtime();
$total1=$end-$start;


$start=microtime();
$id = (int) $_GET;
$end=microtime();
$total2=$end-$start;

echo '<br>---------------------------------------------------------------------------------------<br>';

echo "intval = $total1 <br> int = $total2"
?>
Сергей Д.
326 сообщений
#15 лет назад
Цитата ("VOPLI"):
Цитата ("e1it3"):
любопытно посмотреть на код вашего не верного бенчмарка


<?php

$start=microtime();
$id = intval($_GET);
$end=microtime();
$total1=$end-$start;


$start=microtime();
$id = (int) $_GET;
$end=microtime();
$total2=$end-$start;

echo '<br>---------------------------------------------------------------------------------------<br>';

echo "intval = $total1 <br> int = $total2"
?>

Обалдеть!!! Вы меряете время только ОДИН раз??? Это в корне неверно.
Дмитрий Васильковский
756 сообщений
#15 лет назад
Цитата ("oren"):
Обалдеть!!! Вы меряете время только ОДИН раз??? Это в корне неверно.

Время выполнения первой и второй функции!
Что тут неверного?
Несколько раз F5 нажал! Результаты разные, усреднять не стал... но вывод однозначный!
Андрей К.
1172 сообщения
#15 лет назад
Цитата ("oren"):
Вы меряете время только ОДИН раз???

Правильнее было спросить: Вы меряете время выполнения только ОДНОЙ операции???
Сергей Д.
326 сообщений
#15 лет назад
Кроме того, наверное надо-бы использовать не microtime(), который возвратит string (посмотрите какой ;-) ), а microtime(true) - это возвратит float
Дмитрий Васильковский
756 сообщений
#15 лет назад
Цитата ("oren"):
Кроме того, наверное надо-бы использовать не microtime(), который возвратит string (посмотрите какой ;-) ), а microtime(true) - это возвратит float

Это тут причём? Обе функции microtime() идентичны для обеих операций, и на результат никак повлиять не могут!
Ты так и не ответил, что в корне не верно?
Евгений О.
2989 сообщений
#15 лет назад
Цитата ("VOPLI"):
что в корне не верно?

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