PHP - Гуру. Разъясните, please.
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 сообщений
326 сообщений
#15 лет назад
Цитата ("VOPLI"):Лучше сделать проверку, а не переобразововать в интеджер!
Человек спрашивает какой из двух вариантов выбрать, а Вы говорите, что лучше проверку делать...
Разные ситуации есть, иногда оптимальнее в инт преобразовать, иногда - сначала проверить. От реализуемого алгоритма зависит. А Вы вот так сразу: "лучше это а не то"...
Сам я пользуюсь вариантом intval(...); Какой из этих способов оптимальнне - вообще не задумывался. Никогда не было такой ситуации, чтобы такие места приходилось оптимизировать :-)
756 сообщений
#15 лет назад
Цитата ("oren"):Человек спрашивает какой из двух вариантов выбрать, а Вы говорите, что лучше проверку делать
Это из цикла-"У меня сгорели колонки, какие лучше кодаки поставить чтоб они заработали?"
Я даю ответы на все вопросы

Ну и советы по ситуации!
326 сообщений
#15 лет назад
Цитата ("VOPLI"):Цитата ("oren"):Человек спрашивает какой из двух вариантов выбрать, а Вы говорите, что лучше проверку делать
Это из цикла-"У меня сгорели колонки, какие лучше кодаки поставить чтоб они заработали?"
Я даю ответы на все вопросы
Ну и советы по ситуации!
Нет, это не "из этого цикла". Совсем другая логическая схема, и у человека был корректный вопрос, без "предоположений по умолчанию", как в примере с колонками.
21 сообщение
#15 лет назад
Оффтопик
Цитата ("VOPLI"):
Лично я не понимаю и никогда не понимал зачем проверять на инт то, что ЗАВЕДОМО должно быть в инт.
Лично я не вижу в этом смысла. Прибегаю к "кастрации" в инт. =))
Впрочем это офтоп и очередная тема для холивара. =D
Цитата ("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() идентичны для обеих операций, и на результат никак повлиять не могут!
Ты так и не ответил, что в корне не верно?