मैं अभी एक ऑब्जेक्ट उन्मुख PHP वेबसाइट विकसित कर रहा हूं और शेष सिस्टम से सार डेटाबेस कार्यक्षमता का सबसे अच्छा तरीका निर्धारित करने का प्रयास कर रहा हूं। अभी, मुझे एक डीबी कक्षा मिली है जो सिस्टम के सभी कनेक्शन और प्रश्नों का प्रबंधन करती है (यह एमडीबी 2 के लिए काफी इंटरफ़ेस है)। हालांकि, इस सिस्टम का उपयोग करते समय, मुझे एहसास हुआ है कि मेरे पास मेरे कोड में हर जगह कई SQL क्वेरी स्ट्रिंग दिखाई दे रही हैं।डीबी कार्यक्षमता से कोड अलग करना
function checkLogin($email,$password,$remember=false){
$password = $this->__encrypt($password);
$query = "SELECT uid FROM Users WHERE email=? AND pw=?";
$result = $this->db->q($query,array($email,$password));
if(sizeof($result) == 1){
$row = $result->fetchRow(MDB2_FETCHMODE_ASSOC);
$uid = $row['uid'];
}else{
return false;
}
/* Rest of the login script */
}
मैं करना चाहते हैं क्या इनलाइन एसक्यूएल की मात्रा को कम करने के लिए सबसे अच्छी तकनीक का पता लगाना है: उदाहरण के लिए, मेरे उपयोगकर्ता कक्षा में, मैं कुछ इस तरह मिल गया है। मैं समझता हूं कि ऐसा करने का एक तरीका उपयोगकर्ता के भीतर कार्यों को प्रत्येक प्रश्न के लिए लिखना होगा जो उपयोगकर्ता (निम्न की तरह कुछ) का उपयोग करता है, लेकिन इससे कुछ फ़ंक्शन हो सकते हैं।
function checkLogin($email,$password,$remember=false){
$password = $this->__encrypt($password);
$uid = $this->do_verify_login_query($email,$password);
/* Rest of the login script */
}
function do_verify_login_query($email,$encpw){
$query = "SELECT uid FROM Users WHERE email=? AND pw=?";
$result = $this->$db->q($query,array($email,$encpw));
if(sizeof($result) == 1){
$row = $result->fetchRow(MDB2_FETCHMODE_ASSOC);
return $row['uid'];
}else{
return false;
}
}
तो ... मेरा प्रश्न। एक सामान्य डेटाबेस एप्लिकेशन का उपयोग करने वाली बड़ी संख्या में पूछताछ के प्रबंधन के लिए सबसे अच्छी तकनीक क्या है? जिस तरह से मैंने वर्णन किया है, क्या इस स्थिति को संभालने का सही तरीका होगा? या डीबी कक्षा के भीतर प्रश्नों की एक सूची पंजीकृत करने और प्रत्येक अद्वितीय आईडी (जैसे USER_CHECKLOGIN) के साथ संबद्ध करने के बारे में क्या है जो डीबी के क्वेरी फ़ंक्शन में पारित किया गया है? यह विधि सुरक्षा के साथ भी मदद कर सकती है, क्योंकि यह उन प्रश्नों को सीमित कर देगी जो केवल इस सूची में पंजीकृत हैं, लेकिन सभी वर्ग कार्यों को लिखते समय याद रखना एक और बात है। विचार?
संग्रहित नहीं किया जाएगा प्रक्रियाओं को इन्हें निष्पादित करने के लिए इनलाइन SQL कथन की आवश्यकता होती है, क्योंकि वे केवल डेटाबेस में मौजूद हैं? या जब मैं संग्रहीत प्रक्रियाओं का उपयोग करने के लिए कहता हूं तो क्या मैं समझ नहीं पा रहा हूं? – cmptrgeekken
MySQL वास्तव में संग्रहीत प्रक्रियाओं को जोड़ता है, और मैंने पढ़ा है कि वाक्यविन्यास उतना ही लचीला नहीं है जितना कि यह SQL सर्वर में है। आईएमओ, संग्रहित प्रक्रियाएं वास्तव में बेकार हैं जब तक कि आपको एक व्यापक या जटिल क्वेरी लिखने की आवश्यकता न हो। – Kevin
आप नाम और क्वेरी पैरामीटर पास करने, फ़ंक्शन कॉल के साथ संग्रहीत प्रक्रियाओं को कॉल करते हैं। http://www.macronimous.com/resources/using_stored_procedure_with_mySQL_and_PHP.asp –