[SQL] PHP는 변수를 사용하여 동적 MySQL의 쿼리 만들기
SQLPHP는 변수를 사용하여 동적 MySQL의 쿼리 만들기
나는 HTML 테이블이 그 MySQL 데이터베이스 테이블에로드 다. 드롭 다운의 사용자 선택 하나는 데이터베이스를 조회 할 수 AJAX를 사용하는 경우 - 그 MySQL의 테이블의 컬럼에 관련된 드롭 다운을 가지고있다.
나는 때때로 드롭 다운이 비어 있기 때문에 (즉 그들이 그 열을 기준으로 필터에 원하지 않는) 동적 쿼리를 작성하는 방법을 알아낼 필요가있다.
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
현재이 같은 뭔가를 :
$stationFilter = $_GET['station'];
$verticalFilter = $_GET['vertical'];
$creativeFilter = $_GET['creative'];
$weekFilter = $_GET['week'];
$result = mysql_query("SELECT * FROM $tableName WHERE STATION_NETWORK = '$stationFilter' AND VERTICAL = '$verticalFilter' AND CREATIVE = '$creativeFilter' AND WK = '$weekFilter'");
$data = array();
while ($row = mysql_fetch_row($result) )
{
$data[] = $row;
}
$finalarray['rowdata'] = $data;
어떤 당신이 그 모든 필드가 비어있는 경우 때문에 작동하지 않습니다 상상할 수 - 쿼리 (오히려 아무것도 또는 반환) 실패하지 않습니다.
그 정말 특정 변수가 비어있는 경우가 어렵게처럼 분명히 같은 '정적'쿼리를 생성.
동적으로 만 적절한 데이터를 표시 성공적으로 완료 할 수 있도록 쿼리에 추가됩니다 비어 있지 않은 사람을 입력하는 그래서 쿼리를 만들 수있는 가장 좋은 방법은 무엇입니까?
해결법
-
==============================
1.변수가 값을 포함하고 그들이 할 경우, 그래서 같은 쿼리를 작성하면 그냥 확인 :
변수가 값을 포함하고 그들이 할 경우, 그래서 같은 쿼리를 작성하면 그냥 확인 :
unset($sql); if ($stationFilter) { $sql[] = " STATION_NETWORK = '$stationFilter' "; } if ($verticalFilter) { $sql[] = " VERTICAL = '$verticalFilter' "; } $query = "SELECT * FROM $tableName"; if (!empty($sql)) { $query .= ' WHERE ' . implode(' AND ', $sql); } echo $query; // mysql_query($query);
-
==============================
2.
$filter = array(); if ($_GET['station'] != '') { $filter[] = 'STATION_NETWORK = '.$_GET['station'];} if ($_GET['vertical'] != '') { $filter[] = 'VERTICAL = '.$_GET['vertical'];} if ($_GET['creative'] != '') { $filter[] = 'CREATIVE = '.$_GET['creative'];} if ($_GET['week'] != '') { $filter[] = 'WK = '.$_GET['week'];} $query = 'SELECT * FROM $tableName WHERE '.implode(' AND ', $filter); $result = mysql_query($query); ...
하지만 더 나은 GET의 경우 테이블 행의 이름을 밀어; $ _GET [ 'STATION_NETWORK'] ---이 같은 일부;
then you make foreach ($_GET as $key => $value) { if ($value != '') { $filter[] = $key.' = '.$value;} }
또는 시도
$filter = array('STANTION_NETWORK' => $_GET['station'], 'VERTICAL' => $_GET['vertical'], 'CREATIVE' => $_GET['creative'], 'WK' => $_GET['week']); $query_array = array(); foreach ($filter as $key => $value) { if ($value != '') { $query_array[] = $key.' = '.$value;} } $query = 'SELECT * FROM $tableName WHERE '.implode(' AND ', $query_array); $result = mysql_query($query);
from https://stackoverflow.com/questions/15794179/create-a-dynamic-mysql-query-using-php-variables by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 같은보기에서 다른 열을 계산하는 계산 된 열을 사용하는 방법 (0) | 2020.05.02 |
---|---|
[SQL] 여러 행에 걸쳐 분할 값 [중복] (0) | 2020.05.02 |
[SQL] 이름 데이터베이스 디자인 당신이 선호하는 표기법 그 이유는 무엇입니까? (0) | 2020.05.02 |
[SQL] SQL 서버 업데이트 트리거 만 수정하기 필드 (0) | 2020.05.02 |
[SQL] 유효성 검사 SQL 스크립트 코드 (0) | 2020.05.01 |