پایگاه داده شامل یک یا جند جدول است.
باید بدانید که برای ایجاد یا حذف پایگاه داده، باید دسترسی لازم را داشته باشید.
ایجاد پایگاه داده با استفاده از 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 کلیک کنید.
پایگاه داده ای در لوکال هاست ومپ ایجاد کردم و با 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\hamgaman\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($servername, $username, $password, "", 90
رو زدم و چند نمونه دیگه که هیچ کدوم کار نکردن و این خطا رو میده
Apache/2.4.9 (Win64) PHP/5.5.12 Server at localhost Port 90
و البته احتمال دادم مشکل از نام سرور باشه به همین خاطر $servername روو هم به loacalhost:90 تغییر دادم و با ای پی هم وارد کردم بازم مشکل حل نشد
ممنون میشم راهنمایی کنید
بهتره پورتهای پیش فرض رو تغییر ندید.
وقتی پورت رو باز یا بسته میکنید، باید از طریق فایروال هم این موضوع رو بررسی و چک کنید تا دادهها بتونه از اون پورت رد و بدل بشه، یا فیلتر بشه.
پورت رو به حالت اول برگردونید، و بعد مشکلتون رو اعلام کنید تا بشه راهنمایی کرد.
[/php]
هیچ پایگاه داده ای در سرویس لوکال نمیسازه ارورر میده میگه myDB یافت نشد خوب میخوام این پایگاه داده ایجاد بشه نمیخوام یافت بشه
ساخت جدول درون کد 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
در دیتابیس نمیشه دو جدول همنام وجود داشته باشه. در تعریف جدول اگر فقط از CREATE TABLE استفاده کرده باشید، و اون جدول در دیتابیس وجود داشته باشه، با پیغام خطا مواجه میشید.
این کد
جواب نمیده با این پیام رو برو میشم لطفا کمک کنید
SQLSTATE[42000] [1049] Unknown database 'mydb'
همونطور که از ارور شما پیداست دیتا بیسی ب نام mydb رو نشناخته شما یه چک کنید بینید اصلا دیتابیسی به این نام ساخته اید یا نه ؟
من یه مشکلی دارم.اونم اینه که هر 3تا کدی که شما اینجا قرار دادید وقتی که خودم استفاده میکنم اررور میده؟ببخشید مشکل از چیه؟
دقیقا چیه کدی؟؟؟ و اینکه متن خطایی که برای شما میاد چیه؟؟؟
لطفا متنش رو بذارید تا بشه دقیق راهنمایی کرد.
اینم ارروری که میده!
دقیقا چیزی که شما برای قسمت object oriented نوشتید رو خودم مینویسم اروور میده.اما وقتی کد و کپی میکنم و میازرم داخل محیط کدزنی و اجراش میکنم پیغام میده که دیتا بیس ایجاد شد و چک کردم دیدم ایجادم شده.اگه میشه راهنمایی کنید چون من از طریق این سایت دارم اموزش میبینم و خیلی چیزارو هنوز بلد نیستم
ممنون
کد ساخت جدول رو قرار بدید.
متن خطا میگه که سینتکس ایجاد جدول خطا داره.
سلام
اون اررور قبلم برطرف شد چون مشکل از نام کاربری بود که باید root قرار میدادم
الان یه سوال دارم.این دی که برای ایجاد پایگاه داده قرار دادید رو من استفاده کردم. اما پیغام error creatin database رو بهم داد.چرا دیتابیس ایجاد نشد؟
تو مثال pdo اونجا که متغییر conn به exec ربط داده شده یک علامت منهی و یک علامت بزرگتر آوردید! دقیقا یعنی چی؟
یعنی متغییر conn رو بریز تو exec?
باید بگم که توسط این علامت میتوان به متدها و خصوصیات یک کلاس دسترسی پیدا کرد. شما باید مباحث شیءگرایی و کلاسها رو مطالعه کنید.
من wamp server رو سیستم نصب کردم که mysql 5.5.24 رو داره الان میشه راهنمایی کنید چیکار کنم؟ و این کدهایی که برای ارتباط با پایگاه داده در بالا گفتید دقیقا کجا باید بذاریمشون؟
همونجا!!!
باتشکر