Добрый день! Я новичок, пишу сам сайт, не могу понять почему выдает ошибку синтаксиса .. В запросе к базе данных: $query = "(SELECT good_id, name, img, anons, price, hits, new, sale FROM goods WHERE goods_brandid = $category AND visible='1') UNION (SELECT good_id, name, img, anons, price, hits, new, sale FROM goods WHERE goods_brandid IN ( SELECT brand_id FROM brands WHERE parent_id = $category ) AND visible='1') ORDER BY $order_db LIMIT $start_pos $perpage"; не нравится ему последняя строчка "ORDER BY $order_db", выдает ошибку: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0 9' at line 10
Кстати да, Спасибо, но дело не в этом... You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 9' at line 10 Есть какие-нибудь соображения, я не нарушил правила сочетания ORDER BY и LIMIT..?
блин. ну если ты исправил ошибку с запятой, может поделишся новым сообщением? или блин уже сам начнешь читать - тоже нехуевый вариант. хотя конечно скучный.
Я же написал новое сообщение после этого, в ерроре добавилась запятая и все.. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'LIMIT 0, 9' at line 10
сорри тогда, вечер-усталость-невнимательность. ну весь запрос с уже подставленными переменными было бы интеесно увидеть, может там пустая строка всралась. всегда смотри полный текст запроса если косяк возник. отлаживайся!
Если в целом то выглядит это так: function products($category, $order_db, $start_pos, $perpage){ $query = "(SELECT good_id, name, img, anons, price, hits, new, sale FROM goods WHERE goods_brandid = $category AND visible='1') UNION (SELECT good_id, name, img, anons, price, hits, new, sale FROM goods WHERE goods_brandid IN ( SELECT brand_id FROM brands WHERE parent_id = $category ) AND visible='1') ORDER BY $order_db LIMIT $start_pos, $perpage"; $res = mysql_query($query) or die(mysql_error()); $products = array(); while($row = mysql_fetch_assoc($res)){ $products[] = $row; } return $products; } и в контроллере создаю массив: $order_p = array( 'pricea' => array('от дешевых к дорогим', 'price ASC'), 'priced' => array('от дорогих к дешевым', 'price DESC'), 'datea' => array('по дате добавления - к последним', 'date ASC'), 'dated' => array('по дате добавления - с последних', 'date DESC'), 'namea' => array('от А-Я', 'name ASC'), 'named' => array('от Я-А', 'name DESC'), ); $order_get = clear($_GET['order']); // получаем возможный параметр сортировки if(array_key_exists($order_get, $order_p)){ $order = $order_p[$order_get][0]; $order_db = $order_p[$order_get][1]; }else{ // по умолчанию сортировка по первому элементу массива order_p $order = $order_p['name'][0]; $order_db = $order_p['name'][1]; } А что вообще это за ошибка..? Не может быть дело в типе таблицы? У меня MyISAM..
друг, ты не понял меня. смотри текст запроса — ту строку, которую ты подставляешь в mysql_query() нефиг не надо показывать нам свой скрипт. Код (Text): or die(mysql_error()); замени на Код (Text): or die($query . mysql_error()); понял, нет? Добавлено спустя 1 минуту 5 секунд: и, я тебя умоляю, свой говнокод оформляй в ббкоде [code=php]…[/code] — тебе понравится!
вывести print_r? но как, у меня браузер отрубает все, только эта строчка показывается, а запрос находится в функции..
Так ты поможешь, или издеваться будешь? Я сразу сказал, что я новичок. У меня есть функция, она прописана в модели, как мне из нее выдернуть query и вывести на экран?
помогали все равно въехать не могу, как мне именно к тому запросу обратиться? заново в пустом шаблоне сделать запрос, поместить результат в переменную и вывести ее?
Я написал в функции после запроса его вывод, вот что получил: (SELECT good_id, name, img, anons, price, hits, new, sale FROM goods WHERE goods_brandid = 4 AND visible='1') UNION (SELECT good_id, name, img, anons, price, hits, new, sale FROM goods WHERE goods_brandid IN ( SELECT brand_id FROM brands WHERE parent_id = 4 ) AND visible='1') ORDER BY LIMIT 0, 9
А вот вопрос, почему не отображает, массив я вывожу в контроллере.. $order_p = array( 'pricea' => array('от дешевых к дорогим', 'price ASC'), 'priced' => array('от дорогих к дешевым', 'price DESC'), 'datea' => array('по дате добавления - к последним', 'date ASC'), 'dated' => array('по дате добавления - с последних', 'date DESC'), 'namea' => array('от А-Я', 'name ASC'), 'named' => array('от Я-А', 'name DESC'), ); $order_get = clear($_GET['order']); // получаем возможный параметр сортировки if(array_key_exists($order_get, $order_p)){ $order = $order_p[$order_get][0]; $order_db = $order_p[$order_get][1]; }else{ // по умолчанию сортировка по первому элементу массива order_p $order = $order_p['name'][0]; $order_db = $order_p['name'][1]; }
ошибки бывают двух типов: 1) скопировал чужое не вникая в контекст и 2) по невнимательности, типа букву пропустил отлаживай ↓