PDO 클래스를 확장하여 준비된 명령문의 쿼리 문자열을 조작하는 함수를 추가합니다. 예를 들어 쿼리를 검색 가능하게 만들거나 페이지 매김을 추가하십시오. 예를 들어PDO로 준비된 명령문의 쿼리 문자열 수정
:
$documents_query = $DB->prepare("SELECT id, title, file_name, datetime_added
FROM documents
ORDER BY datetime_added DESC");
$documents_query->paginate($page_number, RESULTS_PER_PAGE);
문제는 쿼리 문자열을 (읽기 전용 인)를 수정하고 저장, 그래서 나중에 실행 얻을 수있는 방법인가? 성명이 준비되면
class CustomStatement extends PDOStatement
{
public function paginate($current_page, $max_results)
{
// Add SQL_CALC_FOUND_ROWS so we can count the total amount of results
$select_index = stripos($this->queryString, 'SELECT');
$statement = substr_replace($this->queryString, 'SELECT SQL_CALC_FOUND_ROWS', $select_index, 6);
// Add LIMIT to the end of the query
$start_limit = ($current_page - 1) * $max_results;
$statement = $statement . ' LIMIT ' . $start_limit . ', ' . $max_results;
// What to do here?
return $this->prepare($statement);
}
}
'paginate'가 새로운'prepare'입니까? – hakre
의도하지 않았습니다. 다른 쿼리를 실행하려면 새 준비된 명령문 핸들을 만들어야합니다. – mario
아마, 당신은 준비된 진술을 이해하지 못한다고 생각합니다. 준비된 명령문은 서버에 보내지고 데이터를 삽입하고 실행하기를 기다립니다. 준비가 완료되면 mySQL 서버에 더 이상 아무 것도 할 수 없습니다. – Erik