مشكلة في الاتصال بقاعدة البيانات

Hamed • منذ 8 سنوات

السلام عليكم .

 

احاول الاتصال بقاعدة البيانات بالطريقة التاليه :

في ملف config.php حطيت معلومات الاتصال بقاعدة البيانات كالتالي


<?php 
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','root');
define('DB_NAME','blog');

 

بعدين سويت كلاس لل Database 

 


<?php
class Database{
	public $host 		= DB_HOST;
	public $username 	= DB_USER;
	public $password 	= DB_PASS;
	public $db_name 	= DB_NAME;
	
	public $link;
	public $error;
	
	/*
	 * Class Constructor
	 */
	public function __construct(){
		//Call Connect Function
		$this->connect();
	}
	
	/*
	 * Connector
	 */
	 private function connect(){
		$this->link = new mysqli($this->host, $this->username, $this->password, $this->db_name);
		if(!$this->link){
			$this->error = "Connection Failed: ".$this->link->connect_error;
			return false;
		}
	 }
}

 

ومن داخل صفحة index.php سويت استدعاء الكلاس وملف الكونفق 

 


<?php 
  include 'config/config.php'; 
  include 'libraries/Database.php'; 

  $db = new Database();
?>

الحين المفروض يتصل بدون مشاكل واذا حطيت معلومات خطا يطلع لي خطا . لكن مايطلع لي خطا اذا غيرت المعلومات فما ادري وين المشكله.

 

 

كلمات دليلية:

ساعد بالإجابة

"إن في قضاء حوائج الناس لذة لا يَعرفها إلا من جربها، فافعل الخير مهما استصغرته فإنك لا تدري أي حسنة تدخلك الجنة."

الإجابات (5)

Ali Majrashi • منذ 8 سنوات
3 ساعات مضت, Hamed said:

السلام عليكم .

 

احاول الاتصال بقاعدة البيانات بالطريقة التاليه :

في ملف config.php حطيت معلومات الاتصال بقاعدة البيانات كالتالي



<?php 
define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','root');
define('DB_NAME','blog');

 

بعدين سويت كلاس لل Database 

 



<?php
class Database{
	public $host 		= DB_HOST;
	public $username 	= DB_USER;
	public $password 	= DB_PASS;
	public $db_name 	= DB_NAME;
	
	public $link;
	public $error;
	
	/*
	 * Class Constructor
	 */
	public function __construct(){
		//Call Connect Function
		$this->connect();
	}
	
	/*
	 * Connector
	 */
	 private function connect(){
		$this->link = new mysqli($this->host, $this->username, $this->password, $this->db_name);
		if(!$this->link){
			$this->error = "Connection Failed: ".$this->link->connect_error;
			return false;
		}
	 }
}

 

ومن داخل صفحة index.php سويت استدعاء الكلاس وملف الكونفق 

 



<?php 
  include 'config/config.php'; 
  include 'libraries/Database.php'; 

  $db = new Database();
?>

الحين المفروض يتصل بدون مشاكل واذا حطيت معلومات خطا يطلع لي خطا . لكن مايطلع لي خطا اذا غيرت المعلومات فما ادري وين المشكله.

 

 

بالنسبة لعملك قمت بنسخ ملفاتك وجربتها عندي وهي تعمل بدون اي مشاكل في حالة انك ادخلت معلومات قاعدة البيانات الصحيحة فانه الكود راح يتصل بقاعدة البيانات وفي حالة وجود معلومات خاطئة فإنه سوف يتم عرض خطأ عدلت تعديل بسيط على كلاس Database.php لعرض رسالة بحالة الإتصال تقدر تستفيد منها بعملك هنا محتوى الكود


<?php

class Database{

	public $host 		= DB_HOST;
	public $username 	= DB_USER;
	public $password 	= DB_PASS;
	public $db_name 	= DB_NAME;
	
	public $link;
	public $error;
	
	/*
	 * Class Constructor
	 */
	public function __construct(){
		//Call Connect Function
		$this->connect();
	}
	
	/*
	 * Connector
	 */
	 private function connect(){
		$this->link = new mysqli($this->host, $this->username, $this->password, $this->db_name);
		if ($this->link->connect_errno) {
    		echo "Failed to connect to MySQL: " . $this->link->connect_error;
    	}else{
    		echo "MySQL did connect without issues";
    	}
	 }
}

واضح من عملك انك محتاج تعمل MySQLi wrapper انصحك بمتابعة هالسلسلة توضح عمل الكلاس واستخدامه اكثر من مره بنفس الملف وتفادي الكثير من مشاكل الإستعلام عند تنفيذ الأوامر لقاعدة البيانات وطريقة تنفيذ لبعض الأاومر مثل جلب بيانات من قاعدة البيانات 

 

Hamed • منذ 8 سنوات
منذ ساعه, Ali Majrashi said:

بالنسبة لعملك قمت بنسخ ملفاتك وجربتها عندي وهي تعمل بدون اي مشاكل في حالة انك ادخلت معلومات قاعدة البيانات الصحيحة فانه الكود راح يتصل بقاعدة البيانات وفي حالة وجود معلومات خاطئة فإنه سوف يتم عرض خطأ عدلت تعديل بسيط على كلاس Database.php لعرض رسالة بحالة الإتصال تقدر تستفيد منها بعملك هنا محتوى الكود



<?php

class Database{

	public $host 		= DB_HOST;
	public $username 	= DB_USER;
	public $password 	= DB_PASS;
	public $db_name 	= DB_NAME;
	
	public $link;
	public $error;
	
	/*
	 * Class Constructor
	 */
	public function __construct(){
		//Call Connect Function
		$this->connect();
	}
	
	/*
	 * Connector
	 */
	 private function connect(){
		$this->link = new mysqli($this->host, $this->username, $this->password, $this->db_name);
		if ($this->link->connect_errno) {
    		echo "Failed to connect to MySQL: " . $this->link->connect_error;
    	}else{
    		echo "MySQL did connect without issues";
    	}
	 }
}

واضح من عملك انك محتاج تعمل MySQLi wrapper انصحك بمتابعة هالسلسلة توضح عمل الكلاس واستخدامه اكثر من مره بنفس الملف وتفادي الكثير من مشاكل الإستعلام عند تنفيذ الأوامر لقاعدة البيانات وطريقة تنفيذ لبعض الأاومر مثل جلب بيانات من قاعدة البيانات 

 

 

 

شكرا لك..  

 

عدلت ملف Database.php ولكن يطلع لي خطا في الحالتين اذا كانت البيانات صحيحة والا خاطئه ويطلع لي هذا الخطا 

 

Failed to connect to MySQL: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

 

بحثت عن الخطا لكن مافهمت شي عن طريقة حله. 

 

جالس اطبق شرح بناء مدونة بسيطه وراح استفيد بلا شك من السلسلة شكرا لك .

Ali Majrashi • منذ 8 سنوات
13 دقائق مضت, Hamed said:

 

 

شكرا لك..  

 

عدلت ملف Database.php ولكن يطلع لي خطا في الحالتين اذا كانت البيانات صحيحة والا خاطئه ويطلع لي هذا الخطا 

 


Failed to connect to MySQL: php_network_getaddresses: getaddrinfo failed: nodename nor servname provided, or not known

 

بحثت عن الخطا لكن مافهمت شي عن طريقة حله. 

 

جالس اطبق شرح بناء مدونة بسيطه وراح استفيد بلا شك من السلسلة شكرا لك .

على مايبدو ان عندك مشكلة بالسيرفر المحلي بحيث ان php ماتقدر تعرف عنوان mysql لتنفيذ الإستعلام تأكد ان كل شي عندك شغال وسليم من apache ,php, mysql وتاكد من phpmyadmin انها تعمل بدون مشاكل ثم حاول مره أخرى مع تغير قيمة DB_HOST في ملف config من localhost الى 127.0.0.1 ثم جرب اذا لم يعمل خذ نسخه احتياطية من ملفاتك وقواعد البيانات عندك على الجهاز ثم قم بإعادة تثبيت السيرفر المحلي ثم حاول مره أخرى وتقدر تركب سيرفر محلي آخر مثل MAMP وجرب ان بقيت المشكلة اكتبها هنا وراح نبذل قصارى جهدنا نساعدك  

Hamed • منذ 8 سنوات
20 ساعات مضت, Ali Majrashi said:

على مايبدو ان عندك مشكلة بالسيرفر المحلي بحيث ان php ماتقدر تعرف عنوان mysql لتنفيذ الإستعلام تأكد ان كل شي عندك شغال وسليم من apache ,php, mysql وتاكد من phpmyadmin انها تعمل بدون مشاكل ثم حاول مره أخرى مع تغير قيمة DB_HOST في ملف config من localhost الى 127.0.0.1 ثم جرب اذا لم يعمل خذ نسخه احتياطية من ملفاتك وقواعد البيانات عندك على الجهاز ثم قم بإعادة تثبيت السيرفر المحلي ثم حاول مره أخرى وتقدر تركب سيرفر محلي آخر مثل MAMP وجرب ان بقيت المشكلة اكتبها هنا وراح نبذل قصارى جهدنا نساعدك  

 

تمام حذفت MAMP وثبته من جديد وزبط الوضع.

 

شاكر لك مساعدتي .

Ali Majrashi • منذ 8 سنوات
2 دقائق مضت, Hamed said:

 

تمام حذفت MAMP وثبته من جديد وزبط الوضع.

 

شاكر لك مساعدتي .

عفوا وبالخدمة دائما عند الإستطاعه لمساعدتكم ????

لايوجد لديك حساب في عالم البرمجة؟

تحب تنضم لعالم البرمجة؟ وتنشئ عالمك الخاص، تنشر المقالات، الدورات، تشارك المبرمجين وتساعد الآخرين، اشترك الآن بخطوات يسيرة !