Адекватен ли такой запрос?

  • Автор темы Автор темы m2k
  • Дата начала Дата начала

m2k

Новичок
Адекватен ли такой запрос?

есть вот такой вот запрос он работает всё ок но просто хотелось бы узнать вполне ли он правелен не грамозок ли или в этом запросе всё вполне порядочно?))

$result=mysql_query("SELECT `goods`.*,`goods_info`.*,`brands`.`name` AS `brand_name`,`goods_cat`.`name` AS `cat_name`
FROM `goods` LEFT JOIN `goods_info` ON `goods`.`id`=`goods_info`.`id`
LEFT JOIN `brands` ON `goods`.`brand`=`brands`.`id`
LEFT JOIN `goods_cat` ON `goods`.`cat`=`goods_cat`.`id`
WHERE `goods`.`id`='".$_GET['id']."'");
 
у меня в кавычках:) там одинарная каывчка потом двойная потом точка потом переменная потом точка потом двойная потом одинарная))) всё как нада всё в кавычках )))
а если ты имел ввиду что строку нада прослэшивать перед запросом то у меня в начале скрипта и все элементы из $_POST и все элементы из $_GET прослэшиваются ) если мэджик квотс отключен:)

а так то запрос нормальный? ничего лишнего всёли коректно ?
 
а оно реагирует на magic_quotes_sybase? :) Если интересно, чем это чревато, то на днях это обсуждалось :)
 
ну я этот момент отношу к "порядочности", о которой спрашивалось )
 
исользовал такую ф-ци для преобразования данных в "безопасному виду"

function post_slashes()
{
if(!get_magic_quotes_gpc())
{
$keys=array_keys($_POST);
for ($i=0;$i<count($keys);$i++)
{
$_POST[$keys[$i]]=addslashes($_POST[$keys[$i]]);
}
}
}

прочитав про то что писалось недавно в форуме про magic_quotes_sybase переделал на это

function post_slashes()
{
$keys=array_keys($_POST);
for ($i=0;$i<count($keys);$i++)
{
if(get_magic_quotes_gpc())
{
$_POST[$keys[$i]]=stripslashes($_POST[$keys[$i]]);
}
$_POST[$keys[$i]]=mysql_escape_string($_POST[$keys[$i]]);
}
}

теперь надёжней?:)
 
Уже лучше... но ежели уж взялся за такое, то я бы предложил тебе юзать mysql_escape_string() именно перед вставкой данных в запрос, т.к. внутри самого скрипта лично я предпочитаю хранить все данные в некоем приведенном виде, откуда бы они не поступали, и приводить в соответствие следующим пунктам назначения только перед посылкой.

Кстати, я обратил внимание, что у тебя везде используются LEFT JOIN. Проверь, везде ли именно оно надо, вместо INNER и RIGHT?

В остальном, тут больше говорить не о чем :)
 
как то странно на вопрос об "А" отвечают о "Б".
Ответ на вопрос до сих пор не дан. И ответа быть не может без explain.
 
explain то explainОм но так может всётаки ответит кто не очень ли гружёный запрос или может его както упростить или в корне изменить?... вот в чём дело. да и покажет ли explain большие различия во времени если таблица почти пустая буквально меньше 10записей...может конечно я глуп и не понимаю всех прелестей explainА
суть запроса выбрать все поля из таблицы `goods` и все из таблицы `goods_info` в `goods_info` все поля типа text ну кроме `id` конечно) и выбрать из `brands` и из `goods_cat` только название соответственно брэнда и категории... вот может это поможет в ответе на мой вопрос:)
 
ок тогда иду смотреть что скажет explain

-~{}~ 10.01.05 20:57:

вот что ответил explain
=> goods
[type] => const
[possible_keys] => PRIMARY
[key] => PRIMARY
[key_len] => 4
[ref] => const
[rows] => 1
[Extra] =>
сравнил с маном значения ключей на сколько я понял вроде нормальный у меня запрос... или я опять ошибаюсь?:) если ошибаюсь то плиз если не трудно пинайте ещё :)
 
Explain на данном запросе должен выдать тебе 4 записи (по количеству таблиц), а у тебя приведена только одна.
 
я тоже подумал что это не всё... но это всё что распетатала print_r()... или массив который возвратила mysql_fetch_assoc() после explain`а стал 2мерный и print_r() Не всё распечатала или print_r() и 2ные печатает?....
 
про mysql_fetch_assoc() я знаю читал и не раз:)
я ступил в другом:)
нада было сделать так

while ($row=mysql_fetch_assoc($result))
{
print_r($row);
}

а я делал просто print_r($row);

вот что получилось:)

=> goods
[type] => const
[possible_keys] => PRIMARY
[key] => PRIMARY
[key_len] => 4
[ref] => const
[rows] => 1
[Extra] =>

=> goods_info
[type] => const
[possible_keys] => PRIMARY
[key] => PRIMARY
[key_len] => 4
[ref] => const
[rows] => 1
[Extra] =>

=> brands
[type] => const
[possible_keys] => PRIMARY
[key] => PRIMARY
[key_len] => 4
[ref] => const
[rows] => 1
[Extra] =>

=> goods_cat
[type] => const
[possible_keys] => PRIMARY
[key] => PRIMARY
[key_len] => 4
[ref] => const
[rows] => 1
[Extra] =>

ну вот так нормальный у меня запрос или нет?) почитав ман и сравнив что мне explain ответил я понял что запрос вроде ничё:) или я опять не то подумал?:)
 
уух наконецто:) всем огромное спасибо кто помогал в моём пинании:)
 
Сверху