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

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']."'");
 

m2k

Новичок
у меня в кавычках:) там одинарная каывчка потом двойная потом точка потом переменная потом точка потом двойная потом одинарная))) всё как нада всё в кавычках )))
а если ты имел ввиду что строку нада прослэшивать перед запросом то у меня в начале скрипта и все элементы из $_POST и все элементы из $_GET прослэшиваются ) если мэджик квотс отключен:)

а так то запрос нормальный? ничего лишнего всёли коректно ?
 

Wicked

Новичок
а оно реагирует на magic_quotes_sybase? :) Если интересно, чем это чревато, то на днях это обсуждалось :)
 

neko

tеam neko
Wicked
поставь эту ценную информацию подписью себе
 

Wicked

Новичок
ну я этот момент отношу к "порядочности", о которой спрашивалось )
 

m2k

Новичок
исользовал такую ф-ци для преобразования данных в "безопасному виду"

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]]);
}
}

теперь надёжней?:)
 

Wicked

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

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

В остальном, тут больше говорить не о чем :)
 

m2k

Новичок
ок проверю:)
нада в мануале и в туториале порытся:)
 

.des.

Поставил пиво кому надо ;-)
как то странно на вопрос об "А" отвечают о "Б".
Ответ на вопрос до сих пор не дан. И ответа быть не может без explain.
 

m2k

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

m2k

Новичок
ок тогда иду смотреть что скажет explain

-~{}~ 10.01.05 20:57:

вот что ответил explain
=> goods
[type] => const
[possible_keys] => PRIMARY
[key] => PRIMARY
[key_len] => 4
[ref] => const
[rows] => 1
[Extra] =>
сравнил с маном значения ключей на сколько я понял вроде нормальный у меня запрос... или я опять ошибаюсь?:) если ошибаюсь то плиз если не трудно пинайте ещё :)
 

Wicked

Новичок
Explain на данном запросе должен выдать тебе 4 записи (по количеству таблиц), а у тебя приведена только одна.
 

m2k

Новичок
я тоже подумал что это не всё... но это всё что распетатала print_r()... или массив который возвратила mysql_fetch_assoc() после explain`а стал 2мерный и print_r() Не всё распечатала или print_r() и 2ные печатает?....
 

m2k

Новичок
про 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 ответил я понял что запрос вроде ничё:) или я опять не то подумал?:)
 

m2k

Новичок
уух наконецто:) всем огромное спасибо кто помогал в моём пинании:)
 
Сверху