Click here to Skip to main content

Design and Architecture

 
GeneralRe: SCRUM PinmemberRags151211-Jan-11 18:54 
GeneralRe: SCRUM PinmemberRaviSant17-Jan-11 21:57 
QuestionObject heuristic PinmemberLeslie Sanford5-Jan-11 11:35 
AnswerRe: Object heuristic PinmvpLuc Pattyn5-Jan-11 13:06 
GeneralRe: Object heuristic PinmemberLeslie Sanford5-Jan-11 13:51 
GeneralRe: Object heuristic PinmvpLuc Pattyn5-Jan-11 14:06 
AnswerRe: Object heuristic Pinmemberpaul_717-Jan-11 1:24 
QuestionDatabase Code PinmemberLeslie Sanford5-Jan-11 5:46 
I'm looking for ideas/guidance on how to design serverside functionality for interacting with a database. My situation is pretty typical. I have PHP "scripts" that receive request variables. Based on the parameters passed to it, the script queries a database, formats the returned data in some way, and returns it, usually in JSON format.
 
I've tried taking various approaches to managing the code for this. For example, I've written sets of functions for querying the databse, e.g. getCustomerByName, getProductsByPrice, etc., with each of these functions containing the necessary SQL code. The problem is that you can have an explosion of these types of functions. And sometimes the queries can get quite nuanced so that you wind up with long named functions like getCustomerByNameAndCountry. This approach doesn't seem to scale well, and has made me a little disillusioned with encapsulating SQL queries in functions.
 
I was thinking about making functions that are more generalized. Something like getCustomer($columns, $where, $orderBy). In other words, parts of the SQL query would be defined outside of the function and passed in. As long as everything is escaped properly, this should be safe. This approach would mean put the responsibility of parsing the request parameters, determining exactly what is being asked for, and then transforming the request parameters into partial SQL statements that would be passed to general functions for performing the actual query.
 
But then maybe the functions aren't needed at all?
 
Anyway, I'm relatively new to DB/severside programming; I've been doing it for less than a year, and I'm still struggling with how to structure a system. Any thoughts are welcome.
AnswerRe: Database Code Pinmemberdasblinkenlight12-Jan-11 11:42 
QuestionMatching between product and customer personal information PinmemberYanshof3-Jan-11 20:07 
AnswerRe: Matching between product and customer personal information Pinmemberdasblinkenlight13-Jan-11 6:24 
QuestionNeed guidance on designing and preparing MCPD PinmemberRags15123-Jan-11 7:11 
AnswerRe: Need guidance on designing and preparing MCPD PinmvpRichard MacCutchan4-Jan-11 5:36 
GeneralRe: Need guidance on designing and preparing MCPD PinmemberRags15124-Jan-11 17:21 
GeneralRe: Need guidance on designing and preparing MCPD PinmvpRichard MacCutchan4-Jan-11 21:39 
QuestionPossible inefficiency in post-increment FOR loop? PinmemberXpnctoc30-Dec-10 15:12 
AnswerRe: Possible inefficiency in post-increment FOR loop? PinmvpRichard MacCutchan30-Dec-10 23:05 
AnswerRe: Possible inefficiency in post-increment FOR loop? PinmvpLuc Pattyn30-Dec-10 23:37 
GeneralRe: Possible inefficiency in post-increment FOR loop? Pinmemberfat_boy31-Dec-10 2:12 
AnswerRe: Possible inefficiency in post-increment FOR loop? Pinmemberfat_boy31-Dec-10 2:13 
AnswerRe: Possible inefficiency in post-increment FOR loop? PinmemberPeter_in_27804-Jan-11 18:21 
AnswerRe: Possible inefficiency in post-increment FOR loop? Pinmemberdasblinkenlight13-Jan-11 2:18 
QuestionDiagramming? Pinmemberdawmail33328-Dec-10 22:48 
AnswerRe: Diagramming? Pinmemberfat_boy31-Dec-10 2:18 
QuestionDeveloping to try to make a difference? PinmemberTodd Baxter28-Dec-10 3:16 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.


Advertise | Privacy | Mobile
Web03 | 2.8.140827.1 | Last Updated 30 Aug 2014
Copyright © CodeProject, 1999-2014
All Rights Reserved. Terms of Service
Layout: fixed | fluid