अपरिभाषित समारोह mysql_connect ()


83

मैंने भाग लिया है aptitude install php5-mysql(और MySQL / Apache 2 को पुनः आरंभ किया है), लेकिन मुझे अभी भी यह त्रुटि मिल रही है:

घातक त्रुटि: पंक्ति में अपरिभाषित फ़ंक्शन mysql_connect () / inhome/validate.php पर कॉल करें

phpinfo() /etc/php5/apache2/conf.d/pdo_mysql.ini फ़ाइल को पार्स किया गया है।


PHP / MySql फ़ंक्शन में निर्मित अन्य के बारे में कैसे? क्या वे कार्य करते हैं?
samayo

शायद नहीं, जैसा कि मैंने गलत उपयोगकर्ता / पास दर्ज करने की कोशिश की है और मेरा 'या मरो' बयान नहीं दिखा रहा है!
user1765369

जवाबों:


53

खैर, यह आपका मौका है! ऐसा लगता है कि पीडीओ तैयार है; इसके बजाय उसका उपयोग करें।

यह देखने के लिए जाँच करें कि क्या PHP MySQL एक्सटेंशन मॉड्यूल लोड किया जा रहा है:

<?php
    phpinfo();
?>

यदि यह नहीं है, तो php.iniफ़ाइल में निम्न जोड़ें :

extension=php_mysql.dll

क्या डेटाबेस से जुड़ने का यह एक बेहतर तरीका है? मैं इस पर गौर करूंगा लेकिन मैं वास्तव में इसे पहले काम करना चाहूंगा क्योंकि यह पहले काम कर चुका था जब तक कि मैं एक नए सर्वर पर नहीं चला गया था।
user1765369

2
यह है। mysql_*कार्य PHP 4.1 के रूप में खतरनाक और पदावनत हैं। अपने अपाचे त्रुटि लॉग की जाँच करें और सर्वर को पुनरारंभ करें। क्या वह काम करता है?
वनोवाक

मैं xampp का उपयोग कर रहा हूं, उस पंक्ति को php.ini में जोड़ने के बाद मुझे अपाचे त्रुटि में निम्न संदेश मिलता है। डायनामिक लाइब्रेरी '\\ xampp \\ php \\ ext \\ php_mysql.dll
bigpony

1
@defmx क्या .dll फ़ाइल उस पथ पर मौजूद है? यदि आपको इसे स्थापित करने की आवश्यकता नहीं है।
वानोवक

65

मामले में, आप पहले से ही PHP7 का उपयोग कर रहे हैं, पूर्व mysql_*में हटाए गए कार्यों को पूरी तरह से हटा दिया गया था, इसलिए आपको पीडीओ-फ़ंक्शन या mysqli_*फ़ंक्शन के बजाय अपने कोड को अपडेट करना चाहिए ।

यदि यह संभव नहीं है, तो वर्कअराउंड के रूप में , मैंने एक छोटी सी PHP फ़ाइल शामिल की है, जो पुराने mysql_*कार्यों को -functions को फिर से बनाता है mysqli_*(): fix_mysql.inc.php


1
मेरे मामले के लिए सही समाधान, मैं अभी तक अपग्रेड नहीं कर सका और मेरे सभी मौजूदा कोड को तोड़ दिया। हालाँकि, आपकी फ़ाइल में वैश्विक $ con चर एक समस्या थी क्योंकि इसमें शामिल फ़ाइल मूल वर्ग के वैश्विक चर को पढ़ने में सक्षम नहीं थी, जिसमें कंस्ट्रक्टर मैंने इसे शामिल किया था। हालाँकि, मैंने केवल शामिल फ़ाइल के फ़ंक्शंस के अंदर एक कनेक्शन वैरिएबल बनाया जहाँ ज़रूरत थी। अब मेरा कोड ठीक काम करता है। धन्यवाद।
जीशान

यह मेरे लिए एक पुराने कोडबेस को नए सर्वर प्लेटफॉर्म पर फिर से चलाने में बहुत मददगार था। चीयर्स!
mxmader

4
धन्यवाद .. इसने मेरी जान बचाई जहाँ उत्पादन को php7 में अपग्रेड किया गया और php5 एप्लीकेशन टूट गया
geekonweb

यह एक प्राचीन PHP अनुप्रयोग को अपग्रेड करने के लिए समय बचाने के लिए एक महान समाधान है। बहुत धन्यवाद।
जोएल करुणंगन

धन्यवाद @ ubo77 एक विरासत कोडबेस पर कुछ सिरदर्द बचाए।
मिकोप

57

मैं देखता हूं कि आपने इसे उबंटू के साथ टैग किया था। सबसे अधिक संभावना MySQL ड्राइवर (और संभवतः MySQL) स्थापित नहीं है। मान लें कि आपके पास SSH या टर्मिनल एक्सेस और sudo अनुमतियां हैं, तो सर्वर में लॉग इन करें और इसे चलाएं:

sudo apt-get install mysql-server mysql-client php5-mysql

यदि MySQL पैकेज या php5-mysql पैकेज पहले से ही स्थापित हैं, तो यह उन्हें अपडेट करेगा।


अपडेट करें

चूँकि यह उत्तर अभी भी कभी-कभार मिलता है इसलिए मैं इसे PHP 7 को शामिल करने के लिए अद्यतन करने जा रहा हूँ । PHP 7 को MySQL के लिए एक अलग पैकेज की आवश्यकता है ताकि आप apt-get कमांड के लिए एक अलग तर्क का उपयोग करना चाहें।

sudo apt-get install mysql-server mysql-common php7.0 php7.0-mysql

और महत्वपूर्ण बात, mysql_connect()PHP v5.5.0 के बाद से हटा दिया गया है। यहां आधिकारिक दस्तावेज देखें: PHP: mysql_connect ()


मुझे पैकेज php7.0 का पता लगाने में असमर्थ है
अजनबी

7.0 को 7.3 के साथ बदलें
rubo77

46

यदि कोई docker php आधिकारिक चित्र की समस्या के साथ यहाँ आया है , तो docker कंटेनर के नीचे कमांड टाइप करें।

$ docker-php-ext-install mysql mysqli pdo pdo_mysql

अधिक जानकारी के लिए, कृपया ऊपर दिए गए लिंक को देखें How to install more PHP extensionsखंड (लेकिन यह मेरे लिए थोड़ा मुश्किल है ...)।

या यह डॉक्टर आपकी मदद कर सकता है।

https://docs.docker.com/samples/library/php/


4
mysqlयह है कि मैं क्या चाहता हूँ
deFreitas

17

मैं भी अपरिभाषित MySQL_connect () की एक ही समस्या के साथ फंस गया था। मैंने PHP.ini फ़ाइल में परिवर्तन करने की कोशिश की लेकिन यह मुझे वही त्रुटि दे रहा था। फिर मैं इस समाधान पर आया, जहां मैंने अपने कोड को मूल्यह्रास php फ़ंक्शन से नए फ़ंक्शन में बदल दिया।

$con=mysqli_connect($host,$user,$password);

mysqli_select_db($con,dbname); 
//To select the database

session_start(); //To start the session

$query=mysqli_query($con,your query); 
//made query after establishing connection with database.

उम्मीद है इससे आपको मदद मिलेगी । यह समाधान मेरे लिए सही ढंग से काम कर रहा है।

संपादित करें:

यदि आप प्रपत्र पुराने php को अपग्रेड करते हैं तो आपको इसकी आवश्यकता होगी apt-get install php7.0-mysql


7

प्रयत्न:

<?php
  phpinfo();
?>

पेज को रन करें और सर्च करें mysql। यदि नहीं मिला है, तो शेल में निम्नलिखित चलाएँ और Apache सर्वर को पुनरारंभ करें:

sudo apt-get install mysql-server mysql-client php5-mysql

यह भी सुनिश्चित करें कि आपके पास आपके apache2.conf (या आपके conf.d / php.ini) फ़ाइल में कहीं निम्नलिखित सभी पंक्तियाँ अधूरी हैं।

;extension=php_mysql.so

सेवा

extension=php_mysql.so


4

मेरा अनुमान है कि आपकी PHP स्थापना MySQL के समर्थन के साथ संकलित नहीं की गई थी।

अपने कॉन्फ़िगर कमांड ( php -i | grep mysql) की जांच करें । आपको कुछ ऐसा देखना चाहिए '--with-mysql=shared,/usr'

आप http://php.net/manual/en/mysql.installation.php पर पूर्ण निर्देशों की जांच कर सकते हैं । हालांकि, मैं @wanovak द्वारा प्रस्तावित समाधान के साथ जाना चाहूंगा।

फिर भी, मुझे लगता है कि पीडीओ का उपयोग करने के लिए आपको MySQL के समर्थन की आवश्यकता है।


1

प्रश्न के साथ टैग किया गया है ubuntu, लेकिन बिना टिप्पणी के समाधान extension=mysqli.dllखिड़कियों के लिए विशिष्ट है। मैं यहाँ उलझन में हूँ?, वैसे भी, पहली बात चलाने के लिए <? php phpinfo ?>और शीर्षक के mysql*तहत खोज करते हैं Configuration। अगर आपको ऐसी कोई चीज नहीं दिखती है तो इसका मतलब है कि आपने इंस्टॉल या इनेबल नहीं किया है php-mysql। तो पहले इंस्टॉल करेंphp-mysql

sudo apt get install php-mysql

यह कमांड आपके द्वारा पहले से इंस्टॉल किए गए php-mysqlपर निर्भर करेगा php, इसलिए संस्करण के बारे में कोई चिंता नहीं है !!।

उसके बाद यूनिक्स विशिष्ट समाधान आता है, php.iniफाइल में लाइन पर टिप्पणी करें

extension=msql.so

सत्यापित करें कि msql.soवर्तमान में है /usr/lib/php/<timestamp_folder>, वरना

extension=path/to/msql.so

फिर अंत में सेवाओं apacheऔर mysqlसेवाओं को फिर से शुरू करें , और आपको अब शीर्षक के mysqlतहत अनुभाग देखना चाहिएConfigrationsphpinfo page


0

मुझे यह त्रुटि मिल रही थी क्योंकि मैं जिस प्रोजेक्ट पर काम कर रहा था वह php 5.6 पर विकसित किया गया था और स्थापित होने के बाद, यह प्रोजेक्ट php7.1 पर चलने में असमर्थ था।

बस किसी ऐसे व्यक्ति के लिए, जो नगंक्स डायरेक्टरी (/ etc / nginx /) में ubuntu / nginx के साथ वैगरेंट का उपयोग करता है, "साइट-अवेलेबल" नाम की एक डायरेक्टरी है, जिसमें योनि मस्कारीन के लिए कॉन्फ़िगर की गई url जैसी फाइल शामिल है। मेरे मामले में homestead.app था। इस फ़ाइल के भीतर एक पंक्ति है जो कुछ ऐसा कहती है

    fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;

वहाँ आप php संस्करण को उस विशेष साइट के लिए वांछित में बदल सकते हैं।

इस गुगली लेकिन वास्तव में एक सरल जवाब खोजने में सक्षम नहीं था, जिसमें कहा गया था कि कहां देखना है और क्या बदलना है।

आशा है कि यह किसी को भी मदद करता है। धन्यवाद।


0

CentOS 7.8 और PHP 7.3 के लिए

yum install rh-php73-php-mysqlnd

और फिर Apache / php को पुनरारंभ करें।


-1

यदि आप के रूप में त्रुटि हो रही है

घातक त्रुटि: अपरिभाषित फ़ंक्शन पर कॉल करें mysql_connect ()

कृपया cPanel में लॉगिन करें >> Select Php वर्जन पर क्लिक करें >> एक्सटेंशन MYSQL चुनें


4
इस सवाल में कोई सुझाव नहीं है कि ओपी CPanel का उपयोग कर रहा है।
क्वेंटिन

-3

कुछ सिंटैक्स त्रुटि होनी चाहिए। इस कोड को कॉपी / पेस्ट करें और देखें कि क्या यह काम करता है:

<?php
    $link = mysql_connect('localhost', 'root', '');
    if (!$link) {
        die('Could not connect:' . mysql_error());
    }
    echo 'Connected successfully';
    ?

मेरे पास एक ही त्रुटि संदेश था। यह पता चला कि मैं msql_connect()इसके बजाय फ़ंक्शन का उपयोग कर रहा था mysql_connect()


ओपी के पास अपरिभाषित फ़ंक्शन mysql_connect है न कि msql_connect इसलिए वह गलत तरीके से टाइप नहीं करता जैसा कि आप सुझाव देते हैं।
तर्कबल्के

-3

(Windows mysql config)

चरण 1: अपाचे कंट्रोल पैनल> अपाचे> कॉन्फिग> PHP.ini पर जाएं

चरण 2: नोटपैड (Ctrl + F) में खोजें: के लिए: ;extension_dir = ""(a के साथ टिप्पणी की जा सकती है ;)। इस पंक्ति को इसके साथ बदलें: extension_dir = "C:\php\ext"(कृपया ;वाक्य की शुरुआत में आपको हटाने की आवश्यकता नहीं है )।

चरण 3: खोज के लिए: extension=php_mysql.dllऔर ;शुरुआत में हटा दें ।

चरण 4: HTTP सर्वर को अपाचे और सेव करें। (विंडोज पर यह आमतौर पर यूआई के माध्यम से किया जाता है)

बस :)

यदि आपको गुम होने के बारे में त्रुटियां हैं, php_mysql.dllतो आपको शायद इस फाइल को php.net साइट या pecl.php.net में से डाउनलोड करना होगा। (आप इसे कहाँ से प्राप्त करते हैं, इसके बारे में कृपया)

PHP पर अधिक जानकारी : विंडोज पर मैनुअल की स्थापना - मैनुअल


1
हालांकि यह विंडोज के लिए सही हो सकता है, इस सवाल को उबंटू टैग किया गया है, जो C:\\phpसिस्टम पर सबसे निश्चित रूप से नहीं है ।
tadman

@tadman उबंटू के लिए कोई फर्क नहीं पड़ता, यह विंडोज़ पर एक नए इंस्टॉलेशन के बाद आज मेरे लिए काम कर रहा है।
रवि गौरव पांडेय

1
@RaviGauravPandey उबंटू से संबंधित मूल प्रश्न। यह आपके लिए विंडोज पर काम करता है वह बिंदु नहीं है। यह एक उबंटू प्रश्न का एक विंडोज उत्तर है।
tadman
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.