2013-04-15 3 views
1

Я пытаюсь сортировать данные столбца в своей таблице, которая генерируется из mysql. Это, как я хочу, чтобы мой стол, чтобы быть: -сортировка данных в таблице столбцов

<th><a href='view.php?sort=first_name'>First Name</th> 
<th><a href='view.php?sort=last_name'>Last Name</th> 

это мой запрос, но я получаю сообщение об ошибке

Parse error: syntax error, unexpected 'if' (T_IF) in C

$result = mysql_query("SELECT * FROM users") 
    if($_GET['sort'] == 'first_name'){ 
    $result .= "ORDER BY first_name"; 
    } 
    else if ($_GET['sort'] == 'last_name'){ 
    $result .= "ORDER BY last_name"; 
    } 
    or die(mysql_error()); 

Я знаю, моя проблема заключается в запросе, но как я могу это исправить?

+2

[** Пожалуйста, дон 'использовать 'mysql_ *' функции в новом коде **] (http://bit.ly/phpmsql). Они больше не поддерживаются [и официально устарели] (https://wiki.php.net/rfc/mysql_deprecation). См. [** красное поле **] (http://j.mp/Te9zIL)? Узнайте о [* подготовленных операторах *] (http://j.mp/T9hLWi) и используйте [PDO] (http://php.net/pdo) или [MySQLi] (http://php.net/ mysqli) - [эта статья] (http://j.mp/QEx8IB) поможет вам решить, какой из них. Если вы выберете PDO, [здесь хороший учебник] (http://j.mp/PoWehJ). – h2ooooooo

+0

Порядочная среда IDE и некоторая базовая способность отладки сделают ошибки в вашем коде совершенно очевидными. – vascowhite

ответ

1

Существует пространство требуется Infront заказа по ключевому слову, и есть некоторые неправильные окончания. Попробуй.

$result = "SELECT * FROM users"; 
    if($_GET['sort'] == 'first_name'){ 
    $result .= " ORDER BY first_name"; 
    } 
    else if($_GET['sort'] == 'last_name'){ 
    $result .= " ORDER BY last_name"; 
    } 
$result = mysql_query($result) or die(mysql_error()); 
+0

В вашем ответе отсутствует точка с запятой в конце инструкции mysql_query(). Разумеется, в этот момент его не следует запускать, но это еще одна проблема. Изменить: Исправлено. – Codeacula

0

необходимо дополнительное пространство между именем столбца и пунктом ORDER BY.

$result .= " ORDER BY first_name"; 
      ^add extra space here 

также

$result .= " ORDER BY last_name"; 
      ^add extra space here 

полный фрагмент кода:

$query = "SELECT * FROM users"; 
if($_GET['sort'] == 'first_name') 
{ 
    $query .= " ORDER BY first_name"; 
} 
else if ($_GET['sort'] == 'last_name') 
{ 
    $query .= " ORDER BY last_name"; 
} 
$result = mysql_query($query) or die(mysql_error()); 

или почему не напрямую это сделать,

$sortColumn = $_GET['sort']; 
$query = "SELECT * FROM users ORDER BY $sortColumn"; 
$result = mysql_query($query) or die(mysql_error()); 
+0

Хотя это, безусловно, устраняет одну из проблем OP, она не исправляет ошибку: 'Ошибка анализа: синтаксическая ошибка, неожиданное 'if' (T_IF) в C'. – h2ooooooo

+1

'$ query =" SELECT * FROM users ORDER BY $ sortColumn ";' - ужасная идея. Вам необходимо проверить и дезинформировать данные перед началом работы. – Codeacula

2

Вы пропускаете точку с запятой и пробел здесь:

$result = mysql_query("SELECT * FROM users "); 
             ^^ 

Parse error обусловлено недостающей точкой с запятой, другая ошибка придет позже :)

Смежные вопросы