Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

चेतावनी:mysql_query ():3 मान्य MySQL-लिंक संसाधन नहीं है

PHP बाहरी वस्तुओं, जैसे फाइलों और डेटाबेस कनेक्शनों के लिंक रखने के लिए एक विशेष चर के रूप में संसाधनों का उपयोग करता है। प्रत्येक संसाधन को एक पूर्णांक आईडी दी जाती है। (दस्तावेज़ीकरण )

विफल कनेक्शन

यदि डेटाबेस कनेक्शन विफल हो जाता है, तो संभवतः आपको "निर्दिष्ट चर एक मान्य MySQL-लिंक संसाधन नहीं है" त्रुटि मिलेगी, जैसा कि डैन ब्रीन ने उल्लेख किया है, क्योंकि संसाधन को धारण करने वाला चर शून्य है।

$link = mysql_connect('localsoth','baduser','badpass'); // failed connection
$result = mysql_query("SELECT 1", $link); // throws error

चूंकि आपको त्रुटि संदेश में एक विशिष्ट संसाधन आईडी मिल रही है, डेटाबेस कनेक्शन किसी कारण से अप्रत्याशित रूप से बंद हो गया है। आपके प्रोग्राम में अभी भी एक संसाधन आईडी के साथ एक चर है, लेकिन बाहरी वस्तु अब मौजूद नहीं है। यह हो सकता है mysql_close() . के कारण हो mysql_query . पर कॉल करने से पहले कहीं कॉल करें , या कोई बाहरी डेटाबेस त्रुटि जिसने कनेक्शन बंद कर दिया है।

$link = mysql_connect();
mysql_close($link);
// $link may still contain a resource identifier, but the external object is gone
mysql_query("SELECT 1", $link);

कनेक्शन का पुन:उपयोग करना

mysql एक्सटेंशन और mysql_connect() . के साथ एक समस्या यह है कि डिफ़ॉल्ट रूप से यदि आप लगातार कॉल में समान पैरामीटर पास करते हैं, तो यह एक नया कनेक्शन बनाने के बजाय मौजूदा कनेक्शन का पुन:उपयोग करेगा (दस्तावेज़ीकरण ) इसे true . पास करके ठीक किया जा सकता है $new_link . पर पैरामीटर।
मैंने स्वयं एक परीक्षण प्रणाली पर इसका सामना किया जहां उत्पादन में दो अलग-अलग डेटाबेस के डेटा को एक परीक्षण सर्वर पर और mysql_xxx() के परीक्षण में संयोजित किया गया था। फ़ंक्शन कॉल एक दूसरे के ऊपर चले गए और सिस्टम को तोड़ दिया।

$link1 = mysql_connect('localhost','user','pass'); // resource id 1 is given
$link2 = mysql_connect('localhost','user','pass'); // resource id 1 is given again
mysql_close($link2); // the connection at resource id 1 is closed
mysql_query("SELECT 1", $link1); // will fail, since the connection was closed

$new_link का उपयोग करना :

$link1 = mysql_connect('localhost','user','pass'); // resource id 1 is given
$link2 = mysql_connect('localhost','user','pass', true); // resource id 2 is given
mysql_close($link2); // the connection at resource id 2 is closed
mysql_query("SELECT 1", $link1); // the connection at resource id 1 is still open

संपादित करें:
एक तरफ के रूप में, मैं MySQLi<का उपयोग करने की सलाह दूंगा /ए> एक्सटेंशन या PDO इसके बजाय, यदि संभव हो तो। MySQL एक्सटेंशन बहुत पुराना हो रहा है, और MySQL संस्करण 4.1.3 से पहले की किसी भी सुविधा का लाभ नहीं उठा सकता है। देखें http://www.php.net/manual/en/mysqli .overview.php तीन इंटरफेस के बीच अंतर पर कुछ विवरण के लिए।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Mysql डेटाबेस दो डेटाबेस के बीच सिंक करता है

  2. MySQL विशेषक असंवेदनशील खोज (स्पेनिश उच्चारण)

  3. पता लगाएं कि MySQL में मान संख्या है या नहीं

  4. क्या MySQL उन स्तंभों का चयन करने की अनुमति देकर मानक को तोड़ रहा है जो खंड द्वारा समूह का हिस्सा नहीं हैं?

  5. Microsoft SQL Server 2000 में MySQL LIMIT क्लॉज का अनुकरण करें