it-swarm.asia

خطأ فادح: خطأ لم يتم اكتشافه: استدعاء إلى وظيفة غير محددة mysql_connect ()

أحاول إجراء اتصال بسيط مع خادم XAMPP و MySQL ، لكن كلما حاولت إدخال البيانات أو الاتصال بقاعدة البيانات ، أتلقى هذا الخطأ.

خطأ فادح: خطأ لم يتم اكتشافه: استدعاء للدالة غير المحددة mysql_connect () في C:\xampp\htdocs\register.php: 22
تتبع المكدس: # 0 {main} في C:\xampp\htdocs\register.php على السطر 22

مثال على السطر 22:

$link = mysql_connect($mysql_hostname , $mysql_username);
59
Demeteor

تمت إزالة وظائف mysql_* في PHP 7.

ربما لديك PHP 7 في XAMPP. لديك الآن بديلان: MySQLi و PDO .

بالإضافة إلى ذلك ، هنا هي صفحة ويكي لطيفة عن شركة تنمية نفط عمان.

102
efik

يمكنك استخدام mysqli_connect($mysql_hostname , $mysql_username) بدلاً من mysql_connect($mysql_hostname , $mysql_username).

تمت إزالة وظائف mysql_* اعتبارًا من PHP 7. لديك الآن بديلان: MySQLi و PDO .

33
user6128099

يوصى باستخدام ملحقات MySQLi أو PDO. لا يوصى باستخدام ملحق mysql القديم للتطوير الجديد ، حيث تم إهماله في PHP 5.5.0 وتمت إزالته في PHP 7.

يوفر PHP ثلاثة واجهات برمجة تطبيقات مختلفة للاتصال MySQL. نعرض أدناه واجهات برمجة التطبيقات التي توفرها ملحقات mysql و mysqli و PDO. ينشئ كل مقتطف شفرة اتصالًا بخادم MySQL يعمل على "example.com" باستخدام اسم المستخدم "اسم المستخدم" وكلمة المرور "كلمة المرور". ويتم تشغيل استعلام لتحية المستخدم.

مثال # 1 مقارنة واجهات برمجة تطبيقات MySQL الثلاثة

<?php
// mysqli
$mysqli = new mysqli("example.com", "username", "password", "database");
$result = $mysqli->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $result->fetch_assoc();
echo htmlentities($row['_message']);

// PDO
$pdo = new PDO('mysql:Host=example.com;dbname=database', 'username', 'password');
$statement = $pdo->query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = $statement->fetch(PDO::FETCH_ASSOC);
echo htmlentities($row['_message']);

// mysql
$c = mysql_connect("example.com", "username", "password");
mysql_select_db("database");
$result = mysql_query("SELECT 'Hello, dear MySQL user!' AS _message FROM DUAL");
$row = mysql_fetch_assoc($result);
echo htmlentities($row['_message']);
?>

أقترح عليك تجربة كل من MySQLi و PDO ومعرفة تصميم API الذي تفضله.

قراءة اختيار API و لماذا لا ينبغي علي استخدام وظائف mysql_ * في PHP؟

19
Abhijit Jagtap

كما توحي الإجابات الأخرى ... قرر بعض الأشخاص (لأي سبب من الأسباب) ألا يعمل الرمز القديم عند ترقية PHP ، لأنه يعرف أفضل منك ولا يهتم بما يفعله الكود الخاص بك أو كم هو بسيط بالنسبة له لك الترقية.

حسنًا ، إذا لم تتمكن من ترقية مشروعك بين عشية وضحاها ، يمكنك ذلك

قلل من إصدار PHP إلى أي إصدار نجح

أو...

استخدم shim (نوع من polyfill) مثل https://github.com/dshafik/php7-mysql-shim أو https://github.com/dotpointer/mysql-shim ، ثم العثور على مكان include_once("choice_shim.php"); في مكان ما في التعليمات البرمجية الخاصة بك

سيؤدي ذلك إلى الحفاظ على الشفرة القديمة PHP قيد التشغيل حتى تكون في مزاج لتحديث ...

7
konzo

تمت إزالة وظائف mysql_* في PHP 7.

لديك الآن بديلان: MySQLi و PDO .

التالي هو (-) وبعد (+) مقارنة لبعض التغييرات الشائعة على MySQLi ، مأخوذة مباشرة من قانون العمل:

-if (!$dbLink = mysql_connect($dbHost, $dbUser, $dbPass))
+if (!$dbLink = mysqli_connect($dbHost, $dbUser, $dbPass))

-if (!mysql_select_db($dbName, $dbLink))
+if (!mysqli_select_db($dbLink, $dbName))

-if (!$result = mysql_query($query, $dbLink)) {
+if (!$result = mysqli_query($dbLink, $query)) {

-while ($row = mysql_fetch_array( $result, MYSQL_ASSOC )) {
+while ($row = mysqli_fetch_array( $result, MYSQLI_ASSOC )) {

-mysql_close($dbLink);
+mysqli_close($dbLink);
7
user664833

تمت إزالة وظائف mysql_ من PHP 7. يمكنك الآن استخدام MySQLi أو PDO .

مثال MySQLi:

mysqli_connect($mysql_hostname, $mysql_username, $mysql_password, $mysql_dbname);

mysqli_connect الرابط المرجعي

2
Dhaval Ajani

تأكد من أنك لم ترتكب خطأ مطبعي كما في حالتي

يجب أن يكون msyql_fetch_assoc mysql

1
Hammad Khan

لقد حصلت على هذا الخطأ لأنه تمت إزالة دالة mysql_connect (في الواقع ، جميع وظائف mysql_*) من PHP 7. يمكنك الآن استخدام MySQLi أو PDO .

مثال:

$mysqli = new mysqli($hostname, $username, $password, $database);
1
rashedcs