ایجاد پایگاه داده در PHP
پایگاه داده شامل یک یا جند جدول است.
باید بدانید که برای ایجاد یا حذف پایگاه داده، باید دسترسی لازم را داشته باشید.
ایجاد پایگاه داده با استفاده از MySQLi و PDO
دستور CREATE DATABASE برای ایجاد یک پایگاه داده در MySQL استفاده می شود.
نحوه استفاده:
CREATE DATABASE database_name
در مثال زیر یک پایگاه داده به نام "myDB" ایجاد کرده ایم:
مثال (MySQLi Object-oriented)
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = new mysqli($servername, $username, $password);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// Create database
$sql = "CREATE DATABASE myDB";
if ($conn->query($sql) === TRUE) {
echo "Database created successfully";
} else {
echo "Error creating database: " . $conn->error;
}
$conn->close();
?>
توجه: زمانی که می خواهید یک پایگاه داده جدید ایجاد کنید، در شیء mysqli تنها سه آرگومان اول را باید مشخص نمایید. (servername و username و password) نکته: اگر برای اتصال به پایگاه داده باید از یک Port مشخص استفاده نمایید، برای تنظیم این آرگومان در شیء mysqli باید آرگومان چهارم یعنی database-name را با یک رشته خالی تنظیم نمایید و سپس آرگومان پنجم را برای تنظیم Port استفاده نمایید: mysqli("localhost", "username", "password", "", port) |
مثال (MySQLi Procedural)
$servername = "localhost";
$username = "username";
$password = "password";
// Create connection
$conn = mysqli_connect($servername, $username, $password);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
// Create database
$sql = "CREATE DATABASE myDB";
if (mysqli_query($conn, $sql)) {
echo "Database created successfully";
} else {
echo "Error creating database: " . mysqli_error($conn);
}
mysqli_close($conn);
?>
در مثال زیر یک پایگاه داده به نام "myDBPDO" ایجاد کرده ایم:
مثال(PDO)
$servername = "localhost";
$username = "username";
$password = "password";
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);
$sql = "CREATE DATABASE myDBPDO";
// use exec() because no results are returned
$conn->exec($sql);
echo "Database created successfully<br>";
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
نکته: یکی از بزرگترین مزیت های PDO وجود کلاس exception برای مدیریت خطاها است. همان طور که می دانید این خطاها ممکن است در کوئری های پایگاه داده رخ دهد و اگر یک استثنا یا exception از داخل بلاک { }try پرتاب (thrown) شود، اجرای اسکریبت متوقف شده و جریان کار به اولین بلاک { }catch منتقل می شود. در واقع استثنای که در قسمت try رخ داده در قسمت catch به دام می افتد. در بلاک catch، با استفاده از دستور echo، دستور SQL و متن خطای تولید شده را چاپ می کنیم.
برای مشاهده فیلم ها و آموزش های پروژه محور برنامه نویسی PHP کلیک کنید.
- نوشته شده توسط امیر پهلوان صادق
- بازدید: 26058
دیدگاهها
با عرض سلام
پایگاه داده ای در لوکال هاست ومپ ایجاد کردم و با php فرمی رو در این دیتابیس ذخیره میکنم
ذخیره اتفاق میوفته اما قبل درج پیام موفقیت آمیز بودن ذخیره اطلاعات خطای :
Deprecated: mysql_connect() : The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\wamp\www\ham gaman\db.php on line 13
رو میده
نسخه ومپ 2.5 آپاچی 2.4.9 و پی اچ پی 5.5.12 ، مای اسکیوال 5.6.17
با سلام و وقت بخیر
متن خطا داره میگه مشکل از کجاست. شما از mysql برای کار با بانک اطلاعاتی استفاده کردید، در صورتی که توابع mysql منسوخ شده و شما باید از mysqli یا PDO استفاده کنید. mysql بیشتر جنبهی آموزشی داره و تو کدهای واقعی استفاده نمیشه.
سلام خسته نباشید
من الان روی سیستمم از ویژوال استفاده میکنم و IIS پورت 80 رو گرفته و منم مجبورشدم پورت apache رو به 90 تغییر بدم الان برای ساخت پایگاه داده این کد
;(conn = new mysqli($servern ame, $username, $password, "", 90
رو زدم و چند نمونه دیگه که هیچ کدوم کار نکردن و این خطا رو میده
Apache/2.4.9 (Win64) PHP/5.5.12 Server at localhost Port 90
و البته احتمال دادم مشکل از نام سرور باشه به همین خاطر $servername روو هم به loacalhost:90 تغییر دادم و با ای پی هم وارد کردم بازم مشکل حل نشد
ممنون میشم راهنمایی کنید
با سلام و تشکر.
بهتره پورتهای پیش فرض رو تغییر ندید.
وقتی پورت رو باز یا بسته میکنید، باید از طریق فایروال هم این موضوع رو بررسی و چک کنید تا دادهها بتونه از اون پورت رد و بدل بشه، یا فیلتر بشه.
پورت رو به حالت اول برگردونید، و بعد مشکلتون رو اعلام کنید تا بشه راهنمایی کرد.
[php]
[/php]
هیچ پایگاه داده ای در سرویس لوکال نمیسازه ارورر میده میگه myDB یافت نشد خوب میخوام این پایگاه داده ایجاد بشه نمیخوام یافت بشه
معمولا در کدنویسی جداول رو تو خود mysql میسازن و کمتر از کد php برای ساخت جدول استفاده میکنن.
ساخت جدول درون کد php به ندرت استفاده میشه، اما اگه شما قصد دارید این کار رو انجام بدید، بهتره درون کد خودتون جدول رو اینطور ایجاد کنید، یعنی اولش کد زیر رو بیارید:
CREATE TABLE IF NOT EXISTS table_name(. . .); //comment
اگر دقت کنید، در کد بالا میبینید که جدول در صورتی ایجاد میشه که وجود نداشته باشه! اگر وجود داشت، جدولی ساخته نمیشه، و خطایی هم داده نمیشه.
با عرض پوزش فکر کنم نتونستم درست بیان کنم منظورم رو
بینید تو مثال های بالا
مثال (MySQLi Object-oriented)
و
مثال (MySQLi Procedural)
هردو به راحتی میتونن یم دیتا بیس بدون ساخت جدول (فقط و فقط نام دیتابیس) رو ایجاد می کنن
اما مثال سوم :
مثال(PDO) نمی تونه پایگاه داده جدیدی را از نو بسازه دنبال پایگاه داده myDB میگرده
توجه داشته باشید نمی خوام جدول بسازم میخوام دیتابیس با کد کریت بشه همین
سلام خدمت شما
ببینید در مثال pdo نام دیتا بیس یه بار mypdo گذاشته شده یه بار mydb شما هر دو جا باید یه نام بذارید تا دیتابیستون ساخته بشه اگه مشکل داشتید بازم پیام بدید مشکلتون توسط من وهمکاران حل میشه
تشکر
یه دنیا ممنونم
مشکلم حل شد ولی یه ارورری دارم
CREATE DATABASE myDB
SQLSTATE[HY000]: General error: 1007 Can't create database 'mydb'; database exists
اگر دقت کنید به آخر متن به عبارت database exists برخورد میکنید. این عبارت داره میگه که جدول موردنظر موجود هست.
در دیتابیس نمیشه دو جدول همنام وجود داشته باشه. در تعریف جدول اگر فقط از CREATE TABLE استفاده کرده باشید، و اون جدول در دیتابیس وجود داشته باشه، با پیغام خطا مواجه میشید.
سلام من لوکال کار میکنم
این کد
جواب نمیده با این پیام رو برو میشم لطفا کمک کنید
SQLSTATE[42000] [1049] Unknown database 'mydb'
با سلام خدمت شما کاربر عزیز و گرامی
همونطور که از ارور شما پیداست دیتا بیسی ب نام mydb رو نشناخته شما یه چک کنید بینید اصلا دیتابیسی به این نام ساخته اید یا نه ؟
با سلام خدمت شما عزیزان
من یه مشکلی دارم.اونم اینه که هر 3تا کدی که شما اینجا قرار دادید وقتی که خودم استفاده میکنم اررور میده؟ببخشید مشکل از چیه؟
با سلام.
دقیقا چیه کدی؟؟؟ و اینکه متن خطایی که برای شما میاد چیه؟؟؟
لطفا متنش رو بذارید تا بشه دقیق راهنمایی کرد.
ERROR CREATING DATABASE: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'CFREATE DATABASE myDB' at line 1
اینم ارروری که میده!
دقیقا چیزی که شما برای قسمت object oriented نوشتید رو خودم مینویسم اروور میده.اما وقتی کد و کپی میکنم و میازرم داخل محیط کدزنی و اجراش میکنم پیغام میده که دیتا بیس ایجاد شد و چک کردم دیدم ایجادم شده.اگه میشه راهنمایی کنید چون من از طریق این سایت دارم اموزش میبینم و خیلی چیزارو هنوز بلد نیستم
ممنون
با سلام.
کد ساخت جدول رو قرار بدید.
متن خطا میگه که سینتکس ایجاد جدول خطا داره.
به نقل از مهرداد صلاحی:
سلام
اون اررور قبلم برطرف شد چون مشکل از نام کاربری بود که باید root قرار میدادم
الان یه سوال دارم.این دی که برای ایجاد پایگاه داده قرار دادید رو من استفاده کردم. اما پیغام error creatin database رو بهم داد.چرا دیتابیس ایجاد نشد؟
سلام! میشه این علامت فلش رو توضیح بدید؟
تو مثال pdo اونجا که متغییر conn به exec ربط داده شده یک علامت منهی و یک علامت بزرگتر آوردید! دقیقا یعنی چی؟
یعنی متغییر conn رو بریز تو exec?
با سلام.
باید بگم که توسط این علامت میتوان به متدها و خصوصیات یک کلاس دسترسی پیدا کرد. شما باید مباحث شیءگرایی و کلاسها رو مطالعه کنید.
سلام و خسته نباشید
من wamp server رو سیستم نصب کردم که mysql 5.5.24 رو داره الان میشه راهنمایی کنید چیکار کنم؟ و این کدهایی که برای ارتباط با پایگاه داده در بالا گفتید دقیقا کجا باید بذاریمشون؟
کجا با پایگاه داده ارتباط رو برقرار میکنید (ساخت و اتصال به دیتابیس)؟
همونجا!!!
لطفا قسمت database رو آپدیت کنید .تو php5از PDO و Mysqli استفاده میشه .mysql رو php5 جواب نمیده
باتشکر
ممنون، در حال به روز رسانی مطالب هستیم ...!
تابع mysql_connect دیگه داره باطل میشه و باید از تابع msqli_connect استفاده کرد.