چنانچه در حال مطالعه این مقاله هستید احتمالا با این مشکل مواجه هستید که علارغم درج اطلاعات صحیح برای اتصال به دیتابیس در API پروژه مبتنی بر PHP، کماکان با خطای زیر مواجه می شوید:
PHP Fatal error: Uncaught Error: Call to undefined function mysql_connect()
این خطا به خصوص زمانی خود را نشان می دهد که به تازگی از PHP 5.6 به PHP 7 یا بالاتر ارتقا داده باشید.
دلیل خطا
دلیل این خطا دقیقا نسخه PHP است. به طور کلی توابع و مشتقات mysql_* در PHP 7 به بالا دیگر پشتیبانی نمی شوند و لذا این تابع و مشتقات آن فقط در PHP 5.6 و قبل از آن پشتیبانی می شود.
نحوه رفع خطا
برای رفع این خطا دو راهکار وجود دارد:
1- تغییر نسخه PHP سرور یا هاست به 5.6
در صورت انتخاب این راهکار کافیست به این راهنما مراجعه و نسخه PHP را به 5.6 کاهش دهید.
2- بروز رسانی پروژه مطابق با توابع جایگزین در PHP 7 و بالاتر
توصیه ما استفاده از این راهکار است. چراکه با یک تیر دو نشان می زنید هم از قابلیت های بسیار خوب PHP 7 بهره مند می شوید هم پروژه خود را بروز کرده اید تا به لحاظ امنیتی و سرعت شرایط بسیار بهتری داشته باشید.
چنانچه انتخاب شما این راهکار است باید از mysqli یا PDO استفاده کنید. در زیر نمونه ای از API در مقایسه با روش قدیمی ارایه شده است. لازم است API پروژه خود را مطابق با یکی از دو روش mysqli یا PDO تغییر دهید:
<?php
// mysqli
$mysqli = new mysqli("localhost", "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=localhost;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("localhost", "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']);
?>