2013-08-31 3 views
0

쿼리 문자열에서 오는 변수가 있습니다 (걱정하지 않아도됩니다). 내 SQL 쿼리에 변수를 추가하는 방법을 알려주십시오. 내 변수 :변수 MySql 쿼리 정렬 및 주문

$order = "ASC"; 
if(isset($_POST['sort'])){ 
    if($_POST['sort']=="date"){ 
     $sort = "date"; 
    } 
    else if($_POST['sort']=="pricelow"){ 
     $sort = "Price"; 
    } 
    else if($_POST['sort']=="pricehigh"){ 
     $sort = "Price"; 
     $order = "DESC"; 
    } 
} 

그리고 아래에있는 내 쿼리 :

$order = " DESC"; 

당신은 사용할 수 있습니다 :

mysql_query("SELECT * FROM event ORDER BY '$sort' '$order'"); 
+5

'$ sort' 및'$ order' 주위에 작은 따옴표를 제거하십시오. –

+2

당신에게 물어 봤으면 좋겠어요. 제발, [새 코드에서 mysql_ * 함수를 사용하지 마십시오] (http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php). 더 이상 유지 관리되지 않으며 [공식적으로 권장되지 않습니다] (https://wiki.php.net/rfc/mysql_deprecation). ** Prepared Statements **에 대해 알아보고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http://php.net/mysqli)를 사용하십시오. 빠른 수행 방법과 왜 그렇게 중요한지에 대해서는 [이 기사] (http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php)를 참조하십시오. –

+0

Akam이 필드 이름이 인용되지 않는다고 말한 것과 관련하여 ASC DESC 키워드도 마찬가지입니다. 시간 필드 이름들만 "따옴표 붙이기"가 필요합니다. 이름은 mysql 키워드와 일치 할 때만 사용됩니다. –

답변

-2
mysql_query("SELECT * FROM event ORDER BY " . $sort . " " . $order); 

은 또는, 다음과 같은 과제를 변경

mysql_query("SELECT * FROM event ORDER BY " . $sort . $order); 
+0

'SORT'와'ORDER' 사이에는 공백이 있어야합니다. 위 변수를 위 또는 쿼리에서 수행하십시오. – DevlshOne

+0

Downvote 이유? – DevlshOne

0

나는 정렬 순서 변수

mysql_query("SELECT * FROM event ORDER BY $sort $order") 

그냥 (!) 참고 주위에서 SQL에 따옴표를 제거, 당신이, 단순한 변화를 덮여 있다고 생각 : MySQL이 지원되지 않습니다, 내가 mysqli 또는 PDO를 사용하여 권합니다