2013-04-15 2 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)를 참조하십시오. 대신 [* prepared statements *] (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

키워드 BY 순서 뿅 필요한 공간이 일부 부적절한 종단이있다. 지금 시도해보십시오.

$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의 문제 중 하나가 확실하게 수정되지만, 'Parse error : C에서'(T_IF) 구문 오류 : 예기치 않은 오류 '가 수정되지 않습니다. – h2ooooooo

+1

'$ query = "SELECT * FROM users ORDER BY $ sortColumn"; '은 끔찍한 생각입니다. 데이터를 확인하고 위생 처리해야합니다. – Codeacula

2

당신은 세미콜론 여기에 공간 그리워 :

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

Parse error이 누락 된 세미콜론 때문이다, 또 다른 오류가 나중에 올 것이다 :

관련 문제