أحاول إجراء اتصال بسيط مع خادم 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);
يوصى باستخدام ملحقات 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؟
كما توحي الإجابات الأخرى ... قرر بعض الأشخاص (لأي سبب من الأسباب) ألا يعمل الرمز القديم عند ترقية PHP ، لأنه يعرف أفضل منك ولا يهتم بما يفعله الكود الخاص بك أو كم هو بسيط بالنسبة له لك الترقية.
حسنًا ، إذا لم تتمكن من ترقية مشروعك بين عشية وضحاها ، يمكنك ذلك
قلل من إصدار PHP إلى أي إصدار نجح
أو...
استخدم shim (نوع من polyfill) مثل https://github.com/dshafik/php7-mysql-shim أو https://github.com/dotpointer/mysql-shim ، ثم العثور على مكان
include_once("choice_shim.php");
في مكان ما في التعليمات البرمجية الخاصة بك
سيؤدي ذلك إلى الحفاظ على الشفرة القديمة PHP قيد التشغيل حتى تكون في مزاج لتحديث ...
تمت إزالة وظائف 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);
تأكد من أنك لم ترتكب خطأ مطبعي كما في حالتي
يجب أن يكون msyql_fetch_assoc mysql