Avatar ·

PHP में पुराने mysql_* फंक्शन का उपयोग क्यों नहीं करना चाहिए और उन्हें किससे बदलें?

सभी को नमस्ते! मैं एक शुरुआती PHP डेवलपर हूं, पुरानी किताबों से सीख रहा हूं। सभी उदाहरणों में MySQL डेटाबेस से कनेक्शन इस तरह दिखता है: ```php $link = mysql_connect('localhost', 'root', ''); mysql_select_db('my_database', $link); $result = mysql_query("SELECT * FROM users WHERE id = " . $_GET['id']); while ($row = mysql_fetch_assoc($result)) { echo $row['name']; } ``` सब कुछ काम करता है, लेकिन मैं देखता हूं कि आधुनिक PHP में ये फंक्शन त्रुटियां उत्पन्न करते हैं। लॉग में लिखा है कि वे पुराने हो गए हैं। फोरम पर कहते हैं कि PHP 7 में इन्हें हटा दिया गया। मैं समझता हूं कि कुछ नया अपनाना होगा, लेकिन समझ नहीं आता: mysql_* में वास्तव में क्या समस्या है? आखिर वे काम तो करते हैं। वे खतरनाक क्यों हैं? और उनके बजाय क्या उपयोग करें — mysqli या PDO? क्या अंतर है? विस्तृत स्पष्टीकरण और उदाहरणों के साथ मदद के लिए आभारी रहूंगा ताकि मैं अपना कोड सही ढंग से फिर से लिख सकूं। <<>>

mysql_* छोड़ने के मुख्य कारण

आप पुराने कोड की क्लासिक समस्या का सामना कर रहे हैं। mysql_* फंक्शन PHP 7 में हटा दिए गए हैं। वे SQL इंजेक्शन के प्रति संवेदनशील हैं, prepared statements का समर्थन नहीं करते, और ऑब्जेक्ट-ओरिएंटेड नहीं हैं। इसके बजाय, mysqli (MySQL improved) या PDO (PHP Data Objects) का उपयोग करें। mysqli केवल MySQL के लिए है, जबकि PDO कई डेटाबेस का समर्थन करता है और अधिक लचीला है। दोनों prepared statements और बेहतर सुरक्षा प्रदान करते हैं।