Array ( [0] => 9 [id] => 9 [1] => 8 [pid] => 8 [2] => 8.9 [path] => 8.9 [3] => 1 [level] => 1 [4] => /lessons/photoshop/ [link] => /lessons/photoshop/ [5] => photoshop [section] => photoshop [6] => Adobe Photoshop [name] => Adobe Photoshop [7] => уроки Adobe photoshop [description] => уроки Adobe photoshop [8] => Здесь собрана коллекция авторских уроков Adobe Photoshop. [text] => Здесь собрана коллекция авторских уроков Adobe Photoshop. [9] => [img] => )
Array ([id] => 9 [pid] => 8 [path] => 8.9 [level] => 1 [link] => /lessons/photoshop/ [section] => photoshop [name] => Adobe Photoshop [description] => уроки Adobe photoshop [text] => Здесь собрана коллекция авторских уроков Adobe Photoshop. [img] => )
внимательно почитай ман по используемой тобой функцииещё я не пойму почему при выборе из базы такие дурацкие массивы получаются, с повторами... Вот щас выбрал, вот какой массив вышел
в данном случае у тебя 1-ый вариант - запрос + цикл, 2-ой - запрос. Можешь определять скорость в php:ну да, скорость незначительно тут меняется думаю. я не знаю как проверять скорость запроса пока что =)
$start = microtime(TRUE);
...
print microtime(TRUE)-$start;
имхоТак какие тут силы тратить... Тут и так всё просто, проще некуда
$q=mysql_query("SELECT * FROM structure WHERE link='".md5($_SERVER['REQUEST_URI'])."'");
if(mysql_num_rows($q)) { echo 'категория существует!'; }
$path=$_SERVER['REQUEST_URI'];
$apath=explode('/',$path);
$apath=clear_arr($apath);
$path_count=count($apath);
$q=mysql_query("SELECT * FROM structure WHERE section='".$apath[$path_count]."'");
while($s=mysql_fetch_array($q)){
if($path==$s['link']){echo 'категория существует!'; break;}
}
function clear_arr() {
...
}
не бывает таких, бывают наиболее подходящие для некоторой ситуациипомоему идеальный вариант...
"SELECT * FROM structure WHERE section='".$apath[$path_count]."'"
$apath[$path_count]
"SELECT * FROM structure WHERE link='".md5($_SERVER['REQUEST_URI'])."'");
не знаю, как в данном конкретном случае... но лучше уж заэкранировать лишнееx-yuri, ну да, теперь получается что мой вариант сложнее. но он лучше имхо. Вот про sql-иньекции действительно не думал, но разве тут он нужен?
strpos(md5($_SERVER['REQUEST_URI']), '\'') === FALSEваш случай:
"SELECT * FROM structure WHERE link='".md5($_SERVER['REQUEST_URI'])."'");
точно также в request url можно любой код прописать и он будет искаться в link... в чем разница?
а составляющие запросы выполняются всегда за одинаковое время?Кстати почему-то твой код измерения скорости почему-то всегда разное время показывает...
концепт: субд реального времени.Насчет запросов понял, думал всегда за одно время выполняются =)
буфер обмена глючит?я не очень пойму, почему опасно, что у меня есть вхождение символа '\' ?
значит учебники такие, читай мануал:кстати что значит оператор ===? в двух учебниках не нашел такого даже...
http://ua.php.net/manual/en/security.database.sql-injection.phpи на счет защиты подскажи, я не пойму чем опасно то, что есть вхождение и размеется не могу защитить приложение )