2013-05-14 7 views
1

사용자가 선택한 옵션 값 중 일부 또는 전부를 기반으로 동적 쿼리를 만들려고합니다. 예를 들어 프로젝트 ID를 선택하면 두 번째 테이블에 저장된 프로젝트 ID, 크기 및 강의와 함께 쿼리가 반환됩니다. 또는 다른 쿼리가 실행할 크기와 부서를 선택하는 경우 선택한 크기의 모든 프로젝트를 표시하고 이에 대한 교훈을 표시합니다.PHP 및 mySQL 동적 쿼리

Heres 지금까지 어떤 ive가 나왔습니다. 정말 도움이 될 수 있습니다. 나는이 조금 도움이 될 수 있습니다 희망

<?php 
$pid = $_POST['project_id'] ; 
$psize = $_POST['projectSize'] ; 
$pdepts = $_POST['depts'] ; 
$lstage = $_POST['stage'] ; 
$ltype = $_POST['type'] ; 
$impacted = $_POST['impacted'] ; 


$sqlString = null; 
echo "Total Number Of Captured Post Variables is:"; 
echo count($_POST); 

echo '<br />'; 

$number = 0; 

foreach ($_POST as $param_name => $param_val) { 

if ($param_val ==""){ 


    }else{ 

    $number++; 

    } 

echo "Param: $param_name = $param_val<br />\n"; 
} 
if($number ==1) { 

}else{ 

} 

?> 

답변

2

, 나는 또한 배열 검사를 추가하고 보안 및 사출 :)를 확인해야

<?php 
$pid = $_POST['project_id'] ; 
$psize = $_POST['projectSize'] ; 
$pdepts = $_POST['depts'] ; 
$lstage = $_POST['stage'] ; 
$ltype = $_POST['type'] ; 
$impacted = $_POST['impacted'] ; 
//Your columns in the DB 
$columns = array('project_id'=>'project_id','project_size'=>'project_size','depts'=>'depts','stage'=>'stage'); 

$sqlString = null; 
echo "Total Number Of Captured Post Variables is:"; 
echo count($_POST); 

echo '<br />'; 

$number = 0; 
$queryStr = ""; 
$preStr = array(); 
foreach ($_POST as $key => $val) { 

if (!empty($_POST[$key])){ 
     if(!is_array($_POST[$key])) 
      $currentStr = $columns[$key]." = ".$val; 
     else 
      $currentStr = $columns[$key]." IN (".implode(',',$_POST[$key]).")"; 

     $preStr[] = $currentStr; 
    } 
} 

$queryStr = "SELECT * FROM tableName WHERE ".implode(' AND ',$preStr); 
echo $queryStr; 

if($number ==1) { 

}else{ 

} 

?> 
+0

감사합니다, 지금은 PHP 프로젝트에 최선을 다하고있어 그래서 빨리 캐롤하려고 애 쓰고있어 :) – Tazzy

+0

감사합니다 Sedz, 필자는 (나는 필드 이름과 테이블 이름을 업데이 트 :) 이제 쿼리가 올바르게 기록됩니다. 그래서 내가 project_id를 선택하지 않으면 uery가 대신 크기 =가 멋지다고 말할 것입니다. 다음 질문은 데이터를 다시 표시하는 쿼리를 표시하는 방법입니다. – Tazzy

0

그것의 아주 쉽게, 단지 각 쿼리에 대한 조건을 실행하면 실행하려면 :

if(isset($_POST['project_id'])){ 
    //they selected a Project ID. 
    //write the query will return with the project ID, size and a lesson stored in a second table 
} elseif (isset($_POST['projectSize']) && isset($_POST['depts'])){ 
    //they selected a size and department 
    // write a query displaying all projects that are of the chosen size with the lessons against it. 
} elseif (some other condition){ 
    //you can keep adding conditions 
} 

을 마지막으로, 당신은 사용하여 입력을 소독 할 수 있습니다 mysql_real_escape_string

0

요점 : 내가 $ queryStr을 echo 할 때 "SELECT FROM table WHERE"등으로 출력됩니다.

어떻게 결과를 테이블에 표시합니까?

+0

나는 그것이 $ result = mysql_query ($ query) WHILE ($ row = mysql_fetch_assoc ($ result)) echo '.....의 줄을 따라 있어야한다. – Tazzy