2015-09-13 4 views
-1

У меня есть следующие атрибуты таблицы posts - id, title, cat_id, contents, date_posted. Для таблицы категорий: идентификатор и имя.php mysql ORDER BY ошибка запроса

Я получаю ошибку в $ query. = "ORDER BY posts.id";

$posts=array(); 
$query=("SELECT posts.id AS post_id, categories.id AS category_id, title, contents, date_posted, categories.name AS name FROM posts INNER JOIN categories ON categories.id = posts.cat_id"); 

if(isset($id)) 
{ 
$id=(int)$id; 
$query.="WHERE posts.id={$id}"; 
} 

$query.="ORDER BY posts.id DESC"; 
$query=mysql_query($query); 
+0

Предполагая, что вы используете php, попробуйте использовать mysqli. Mysql сам по себе был обесценен. Это может вызвать ошибку –

+0

@benjayhutton yes – user43052

+0

Вы действительно понимаете, что такое _concatenation_? Вероятно, _whitespaces? И что произойдет, если 'if (! Isset ($ id))'? – user5173426

ответ

1

Ваше построение запроса кажется неправильным для меня. Перед предложением WHERE должно существовать пробелы и то же самое для ORDER BY.

$posts = array(); 
$query = ("SELECT posts.id AS post_id, categories.id AS category_id, title, contents, date_posted, categories.name AS name FROM posts INNER JOIN categories ON categories.id = posts.cat_id"); 

if (isset($id)) { 
    $id=(int)$id; 
    $query .= " WHERE posts.id={$id}"; // note whitespace before WHERE 
} 

$query .= " ORDER BY posts.id DESC"; // note whitespace before ORDER BY here 
$query = mysql_query($query); 
Смежные вопросы