اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر
بتاريخ 1 ساعة قال علي الكاسر:

عفوا اخي لم افهم اي شي 

انا استخدم لغة php. ومكتبة pdo في التعامل مع قواعد البيانات، 

الذي احتاجه كود يقووم  بنسخ قاعدة البيانات الموجودة في ملف بعد تصديرها ، ينسخها في قاعدة بيانات جديده، اعلم انه يتم فعل هذا في phpmyadmin ولكن انا اريد فعل ذلك بكود خاص، من اجل الموقع الذي اعمل عليه 

بما أن الحل المطلوب يجب أن يكون بلغة php يمكنك إستعمال الكود التالي لتحقيق المطلوب شرط أن تكون صيغة الملف الذي تم تصديره من قاعدة البيانات الأصلية هي sql.

يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك مع الحفاظ على نفس طريقة العمل وكما يلي

<?php
	 
	// مسار الملف
	$filename = 'name.sql';
	// MySQL host
	$mysql_host = 'localhost';  // عنوان المضيف
	// MySQL username
	$mysql_username = 'root'; // اسم المستخدم
	// MySQL password
	$mysql_password = ''; // كلمة المرور
	// Database name
	$mysql_database = 'database_name'; // قاعدة البيانات التي تريد إستيراد الملف لها
	 
	// Connect to MySQL server
	mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
	// الإتصال بقاعدة البيانات واختيارها
	mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());
	 
	// ننشئ متغير لخزن الجملة المراد تنفيذها
	$templine = '';
	// Read in entire file
	$lines = file($filename); // sql نقرأ
	// Loop through each line
	foreach ($lines as $line) // نقوم بعمل حلقة تكرار للمرور على جميع السطور
	{
	 
	if (substr($line, 0, 2) == '--' || $line == '') // نتجاهل التعليقات
	    continue;
	
 
	$templine .= $line; // نسند السطر قيد المعالجة الى المتغير المنشأ مسبقاً
	 
	if (substr(trim($line), -1, 1) == ';') // نحدد فيما إذا كانت نهاية سطر من خلال الفاصلة المنقوطة
	{
	    // نقوم بتنفيذ السطر
	    mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
	    // بعد غنتهاء التنفيذ نعيد قيمة المتغير الى حالته الأصلية ليكون جاهزاً للسطر القادم
	    $templine = '';
	}
	}
	 echo "Tables imported successfully";
?>
	
  • 0
نشر

قم بإنشاء قاعة بيانات بنفس الاسم :

mysql> create database sakila;

قم باستيراد الملفات :

mysql -u [اسم المستخدم] –p [اسم قاعدة البيانات] < [مسار ملف الارشيف]

على سبيل المثال :

mysql --host=dbfmylast --user=root --port=3306 -p sakila < D:\sakila.sql

وللتأكد من نجاح العملية :

mysql> use sakila;
...
mysql> show tables;

حيث أن sakila هي اسم قاعدة البيانات.

  • 0
نشر
بتاريخ 55 دقائق مضت قال عمر قره محمد:

قم بإنشاء قاعة بيانات بنفس الاسم :


mysql> create database sakila;

قم باستيراد الملفات :


mysql -u [اسم المستخدم] –p [اسم قاعدة البيانات] < [مسار ملف الارشيف]

على سبيل المثال :


mysql --host=dbfmylast --user=root --port=3306 -p sakila < D:\sakila.sql

وللتأكد من نجاح العملية :


mysql> use sakila;
...
mysql> show tables;

عفوا اخي لم افهم اي شي 

انا استخدم لغة php. ومكتبة pdo في التعامل مع قواعد البيانات، 

الذي احتاجه كود يقووم  بنسخ قاعدة البيانات الموجودة في ملف بعد تصديرها ، ينسخها في قاعدة بيانات جديده، اعلم انه يتم فعل هذا في phpmyadmin ولكن انا اريد فعل ذلك بكود خاص، من اجل الموقع الذي اعمل عليه 

  • 0
نشر
بتاريخ منذ ساعة مضت قال علي محسن:

بما أن الحل المطلوب يجب أن يكون بلغة php يمكنك إستعمال الكود التالي لتحقيق المطلوب شرط أن تكون صيغة الملف الذي تم تصديره من قاعدة البيانات الأصلية هي sql.

يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك مع الحفاظ على نفس طريقة العمل وكما يلي


<?php
	 
	// مسار الملف
	$filename = 'name.sql';
	// MySQL host
	$mysql_host = 'localhost';  // عنوان المضيف
	// MySQL username
	$mysql_username = 'root'; // اسم المستخدم
	// MySQL password
	$mysql_password = ''; // كلمة المرور
	// Database name
	$mysql_database = 'database_name'; // قاعدة البيانات التي تريد إستيراد الملف لها
	 
	// Connect to MySQL server
	mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());
	// الإتصال بقاعدة البيانات واختيارها
	mysql_select_db($mysql_database) or die('Error selecting MySQL database: ' . mysql_error());
	 
	// ننشئ متغير لخزن الجملة المراد تنفيذها
	$templine = '';
	// Read in entire file
	$lines = file($filename); // sql نقرأ
	// Loop through each line
	foreach ($lines as $line) // نقوم بعمل حلقة تكرار للمرور على جميع السطور
	{
	 
	if (substr($line, 0, 2) == '--' || $line == '') // نتجاهل التعليقات
	    continue;
	
 
	$templine .= $line; // نسند السطر قيد المعالجة الى المتغير المنشأ مسبقاً
	 
	if (substr(trim($line), -1, 1) == ';') // نحدد فيما إذا كانت نهاية سطر من خلال الفاصلة المنقوطة
	{
	    // نقوم بتنفيذ السطر
	    mysql_query($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
	    // بعد غنتهاء التنفيذ نعيد قيمة المتغير الى حالته الأصلية ليكون جاهزاً للسطر القادم
	    $templine = '';
	}
	}
	 echo "Tables imported successfully";
?>
	

اخي لقد ظهر لي هذا الخطأ

 

Fatal error: Uncaught Error: Call to undefined function Controllers\mysql_connect() in /storage/emulated/0/wanachat/Controllers/Database.php:21 Stack trace: #0 /storage/emulated/0/wanachat/Core/Route.php(24): Controllers\Database->index() #1 /storage/emulated/0/wanachat/wepUrl.php(20): Route::get('database', Array) #2 /storage/emulated/0/wanachat/index.php(9): require('/storage/emulat...') #3 {main} thrown in /storage/emulated/0/wanachat/Controllers/Database.php on line 21

 

ويشير الخطاء الى هذا السطر 

 

mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());

  • 0
نشر
بتاريخ 5 دقائق مضت قال علي الكاسر:

اخي لقد ظهر لي هذا الخطأ

 

Fatal error: Uncaught Error: Call to undefined function Controllers\mysql_connect() in /storage/emulated/0/wanachat/Controllers/Database.php:21 Stack trace: #0 /storage/emulated/0/wanachat/Core/Route.php(24): Controllers\Database->index() #1 /storage/emulated/0/wanachat/wepUrl.php(20): Route::get('database', Array) #2 /storage/emulated/0/wanachat/index.php(9): require('/storage/emulat...') #3 {main} thrown in /storage/emulated/0/wanachat/Controllers/Database.php on line 21

 

ويشير الخطاء الى هذا السطر 

 

mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());

يعتمد الأمر على ما تستخدمه من أدوات برمجية ونظام تشغيلي.يمكنك نسخ  الخطأ الى google لتفهم أكثر. إذا كنت تستعمل linux قم بتثبيت الحزمة المطلوبة كما يلي.

	sudo apt install php-mysqli
	
  • 0
نشر
بتاريخ منذ ساعة مضت قال علي محسن:

mysql_connect($mysql_host, $mysql_username, $mysql_password) or die('Error connecting to MySQL server: ' . mysql_error());

هل يمكن اعادة كتابة الكود والاتصال بقاعدة البيانات بطريقة pdo 

لان هذه الطريقه قديمه ولم تعد تعمل 

  • 0
نشر
بتاريخ 17 دقائق مضت قال علي الكاسر:

هل يمكن اعادة كتابة الكود والاتصال بقاعدة البيانات بطريقة pdo 

لان هذه الطريقه قديمه ولم تعد تعمل 

كما ذكرنا في الأجابة الأصلية يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك. حاول تغيير الإتصال بإستخدام pdo كما يلي وعندما تواجه مشكلة يمكنك البحث عن الخطأ في google أولاً فأن تعذر عليك الحل سنساعدك بكل سرور.

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
	
  • 0
نشر
بتاريخ 12 ساعات قال علي محسن:

كما ذكرنا في الأجابة الأصلية يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك. حاول تغيير الإتصال بإستخدام pdo كما يلي وعندما تواجه مشكلة يمكنك البحث عن الخطأ في google أولاً فأن تعذر عليك الحل سنساعدك بكل سرور.

اخي لقد فعلت مايلزم  ولم يظهر لي اي خطأ هذه المره ولكن لم ينجح في نسخ الجداول في قاعدة البيانات الجديده 

 

هذا الكود كامل اتمنى ان تجربه لديك وتعرف مصدر المشكله

	<?php
namespace Controllers;
use PDO;
class Database 
{
    public function index()
    {
      try {
  $conn = new PDO("mysql:host=localhost;dbname=database_name",'root', '');
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
    
    //  مسار الملف
    $filename = 'data/data_user.sql';
    $mysql_database = 'database_name'; // قاعدة البيانات التي تريد إستيراد الملف لها
     
    // ننشئ متغير لخزن الجملة المراد تنفيذها
    $templine = '';
    // Read in entire file
    $lines = file($filename); // sql نقرأ
    // Loop through each line
    foreach ($lines as $line) // نقوم بعمل حلقة تكرار للمرور على جميع السطور
    {
     
    if (substr($line, 0, 2) == '--' || $line == '') // نتجاهل التعليقات
        continue;
    
 
    $templine .= $line; // نسند السطر قيد المعالجة الى المتغير المنشأ مسبقاً
     
    if (substr(trim($line), -1, 1) == ';') // نحدد فيما إذا كانت نهاية سطر من خلال الفاصلة المنقوطة
    {
        // نقوم بتنفيذ السطر
        $conn->prepare($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
        // بعد غنتهاء التنفيذ نعيد قيمة المتغير الى حالته الأصلية ليكون جاهزاً للسطر القادم
        $templine = '';
    }
    }
     echo "Tables imported successfully";
     
    }
}

  • 0
نشر
بتاريخ 12 ساعات قال علي محسن:

كما ذكرنا في الأجابة الأصلية يمكنك تغيير ما يلزم تغييره وفقاً لمتطلباتك. حاول تغيير الإتصال بإستخدام pdo كما يلي وعندما تواجه مشكلة يمكنك البحث عن الخطأ في google أولاً فأن تعذر عليك الحل سنساعدك بكل سرور

اخي شكرا لك لقد حللت المشكلة واشتغل الكود بنجاح 

الكود الصحيح كالتالي

 
	<?php
namespace Controllers;
use PDO;
class Database 
{
    public function index()
    {
      try {
  $conn = new PDO("mysql:host=localhost;dbname=database_name",'root', '');
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
    
    //  مسار الملف
    $filename = 'data/data_user.sql';
    $mysql_database = 'database_name'; // قاعدة البيانات التي تريد إستيراد الملف لها
     
    // ننشئ متغير لخزن الجملة المراد تنفيذها
    $templine = '';
    // Read in entire file
    $lines = file($filename); // sql نقرأ
    // Loop through each line
    
   
    
    foreach ($lines as $line) // نقوم بعمل حلقة تكرار للمرور على جميع السطور
    {
     
    if (substr($line, 0, 2) == '--' || $line == '') // نتجاهل التعليقات
        continue;
    
 
    $templine .= $line; // نسند السطر قيد المعالجة الى المتغير المنشأ مسبقاً
     
    if (substr(trim($line), -1, 1) == ';') // نحدد فيما إذا كانت نهاية سطر من خلال الفاصلة المنقوطة
    {
      echo '<br><br>';
      echo $templine;
      echo '<br><br>';
        // نقوم بتنفيذ السطر
        $query = $conn->prepare($templine) or print('Error performing query \'<strong>' . $templine . '\': ' . mysql_error() . '<br /><br />');
        $query->execute();
        // بعد غنتهاء التنفيذ نعيد قيمة المتغير الى حالته الأصلية ليكون جاهزاً للسطر القادم
        $templine = '';
    }
    }
     echo "Tables imported successfully";
     
    }
}

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...