PHP로 페이지 생성을 작성할 때 데이터베이스 쿼리로 가득 찬 파일 세트를 작성하는 경우가 종종 있습니다. 예를 들어, 다음과 같이 페이지에 표시하기 위해 데이터베이스에서 직접 게시물에 대한 일부 데이터를 가져 오는 쿼리가있을 수 있습니다.
$statement = $db->prepare('SELECT * FROM posts WHERE id=:id');
$statement->bindValue(':id', $id, PDO::PARAM_INT);
$statement->execute();
$post = $statement->fetch(PDO::FETCH_ASSOC);
$content = $post['content']
// do something with the content
이러한 빠른 일회성 쿼리는 일반적으로 작지만 때로는 데이터베이스 상호 작용 코드의 많은 부분으로 끝나는 경우가 있습니다.
경우에 따라 포스트 관련 db 쿼리를 처리하는 간단한 함수 라이브러리를 만들어이 코드 블록을 간단한 것으로 단축하여이 문제를 해결했습니다.
$content = post_get_content($id);
그리고 그것은 훌륭합니다. 아니면 적어도 다른 일을해야 할 때까지입니다. 가장 최근의 5 개의 게시물을 목록에 표시해야 할 수도 있습니다. 글쎄, 나는 항상 다른 기능을 추가 할 수 있었다 :
$recent_posts = post_get_recent(5);
foreach ($recent_posts as $post) { ... }
그러나 그것은 SELECT *
일반적으로 실제로 필요하지 않지만 종종 추상화하기에는 너무 복잡합니다. 결국 모든 단일 사용 사례에 대한 방대한 데이터베이스 상호 작용 함수 라이브러리 또는 모든 페이지 코드 내부의 복잡한 쿼리로 끝납니다. 이 라이브러리를 만든 후에도 이전에는 사용하지 않은 작은 조인을 수행해야하며 작업을 수행하기 위해 고도로 전문화 된 다른 기능을 작성해야합니다.
물론, 일반적인 유스 케이스 및 특정 상호 작용에 대한 쿼리 기능을 사용할 수는 있지만 원시 쿼리를 작성하자마자 모든 것에 직접 액세스하기 시작합니다. 어쨌든, 게으르고 MySQL 쿼리에서 직접 수행 해야하는 PHP 루프에서 작업을 시작합니다.
인터넷 응용 프로그램을 작성하는 데 더 경험이 많은 사람들에게 물어보고 싶습니다. 추가 코드 줄과 추상화로 인해 발생할 수있는 비 효율성에 대한 유지 관리 능력 향상이 있습니까? 아니면 단순히 직접 쿼리 문자열을 사용하여 데이터베이스 상호 작용을 처리하는 데 적합한 방법입니까?
select