동적

2009-11-06 2 views
3

의 내가 동적

$stmt1 = $po->prepare("SELECT * FROM tabname WHERE categ=:categ ORDER BY field1 DESC"); 
$stmt2 = $po->prepare("SELECT * FROM tabname WHERE categ=:categ ORDER BY field1 ASC"); 

내가 ASC를 결합 할 수있는 방법이 순서 만 다른 2 PDO 문 (내림차순 대 ASC)가 있다고 가정 해 봅시다/DESC 동적으로 내가 할 수 오름차순/내림차순 바인딩 순서 PDO 단지 1 stmt

답변

6

no. 매개 변수는 자동으로 인용되며 ASC/DESC는 인용되지 않아야합니다. 테이블 및 열 이름이 매개 변수가 될 수없는 것과 같은 이유입니다.

0

$ _session에 "task_order"라는 변수를 만들고 기본적으로 0으로 설정했습니다. 그런 다음 sql 문에서 ASC 또는 DESC를 SQL 문에 추가해야하는지 결정하는 private 함수/switch 문을 호출합니다. 0이면 "ASC"를 반환하고 "task_order"를 1로 설정합니다. 1이면 반대입니다. 따라서 "토글 (toggle)"메커니즘처럼 작동합니다.

나는 이것이 이전의 질문/주제라는 것을 이해한다. 그러나 나는 그것이 우연히 발견되어서 우연히 만났을 것이다. 그래서 누군가 다른 사람도 역시 그렇게 할 것이다. 더 좋은 아이디어가 있다면 공유하십시오!

편집 : "? WHERE 우선 순위에 따라 소유자 = ORDER 작업 SELECT * FROM"=

$의 SQL : 오래된 코드를 발견했다. $ this-> check_sort_status(). "";

내가 전화하는 방법은 다음과 같습니다

public function check_sort_status() { 

switch ($_SESSION["asc"]) { 
    case 0: 
     $_SESSION["asc"] = 1; 
     return "ASC"; 
    case 1: 
     $_SESSION["asc"] = 0; 
     return "DESC"; 
}