سلام دوستان ، امیدوارم حالتان خوب باشد ، به غول مرحله آخر PHP ( شوخی میکنم 🙂 ) یعنی کار با دیتابیس رسیدیم . با ما همراه باشد .
اکثر نرم افزار ها نیاز دارند یک سری اطلاعات ( پست ها ، کاربران و … ) را ذخیره کنند ، برای این کار ما از دیتابیس استفاده میکنیم .
به صورت پیشفرض ما از MySQL استفاده میکنیم ولی دیتابیس های دیگری با ساختار های متفاوت وجود دارند که ما در این مقاله به آن ها نمیپردازیم .
شروع کار
قبل از هر چیزی ما باید یک دیتابیس داشته باشیم که به آن متصل شویم ! لوکال هاست خود را فعال کنید و وارد آدرس localhost/phpmyadmin شوید .
در phpmyadmin روی تب Databases کلیک کنید .

حالا نام دیتابیس dbtest وارد می کنیم و Collation را utf8_persian_ci انتخاب میکنیم . حالا روی Create کلیک می کنیم تا دیتابیس ساخته شود .
در لیست دیتابیس ها ( سمت جپ ) دیتابیس را انتخاب میکنیم .
یک جدول به نام users و تعداد فیلد ۲ میسازیم .

خوب حالا وارد بخش مشخصات جدول می شویم .
ما ۲ فیلد میخواهیم username و password که هر دو varchar(24) میباشند . ( برای این آموزش )

با کلیک روی Save جدول را ذخیره میکنیم . حالا روی Insert برای ساخت اطلاعات جدید کلیک کنید .

حالا اطلاعات را مانند تصویر پر کنید و ذخیره کنید .

خوب دیتابیس آماده است تا با PHP به آن متصل شویم .
توجه کنید که با کد SQL زیر هم پس از ساخت دیتابیس در تب SQL میتوانید تمام مراحل بالا را به صورت اتوماتیک انجام دهید .
|
CREATE TABLE IF NOT EXISTS `users` ( `username` varchar(24) COLLATE utf8_persian_ci NOT NULL, `password` varchar(24) COLLATE utf8_persian_ci NOT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_persian_ci; INSERT INTO `users` (`username`, `password`) VALUES ('user1', 'pass1'), ('user2', 'pass2'); |
توابع اتصال به دیتابیس در PHP
در PHP یک سری توابع و کلاس از پیش تعریف شده وجود دارد که ما از آن ها استفاده می کنیم.
۲ روش کلی برای اتصال به دیتابیس ( قبلا ۳ روش بود ولی توابع mysql_ دیگه استفاده نمی شوند ) وجود دارد ، PDO و mysqli .
pdo یک کلاس است که متد های برقراری ارتباط بیشتری نصبت به mysqli دارد که من آن را ترجیح میدهم ولی در این آموزش به mysqli که ساده تر است می پردازیم و یک مقاله را به PDO اختصاص میدهم .
اولین کار این است که به دیتابیس وصل شویم ، برای این کار از تابع mysqli_connection استفاده میکنیم ( توجه کنید که تابع mysqli_ هست نه mysql_ )
این تابع ۴ ورودی دارد ، هاست دیتابیس ، نام کاربری ( root در لوکال هاست ) ، پسورد ( در لوکال هاست پسورد “” هست ) و نام دیتابیس .
|
<?php $con = mysqli_connect("localhost","root","", "dbtest"); if (!$con) { die('Could Not Connect: ' . mysqli_error($con) . mysqli_errno($con)); } mysqli_close($con); ?> |
همان طور که مشاهده میکنید از ۳ تایع دیگر نیز استفاده کردیم :
خوب حالا باید کوئری ها را اجرا کنیم .
اجرای کوئری ها با mysqli
برای این کار از تابع mysqli_query استفاده میکنیم که میتوانیم به وسیله ی آن کوئری های استاندارد را اجرا کنیم .
برای مثال :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
|
<?php $con = mysqli_connect("localhost","root","", "dbtest"); if (!$con) { die('Could Not Connect: ' . mysqli_error($con) . mysqli_errno($con)); } $insert = mysqli_query($con, "INSERT INTO users (username, password) VALUES('Value 1', 'Value 2' )"); if (!$insert) { die (mysql_error($con)); } $select = mysqli_query($con, "SELECT * FROM users"); if (!$select) { die (mysql_error($con)); } $update = mysqli_query($con, "UPDATE users SET password = 'Value' WHERE password LIKE 'Value 2'"); if (!$update) { die (mysql_error($con)); } $delete = mysqli_query($con, "DELETE FROM users WHERE password LIKE 'Value'"); if (!$delete) { die (mysql_error($con)); } mysqli_close($con); ?> |
اگر مشکلی پیش بیاید مقدار برگردانده شده false است .
مدیریت اطلاعات دریافت شده
اگر ما SELECT انجام داده باشیم ، یک سری اطلاعات را نیاز داریم دریافت کنیم برای این کار از mysqli_fetch_assoc استفاده می کنیم که به ازای هر سطر به ما یک آرایه با key های نام فیلد می دهد .
|
<?php $con = mysqli_connect("localhost","root","", "dbtest"); if (!$con) { die('Could Not Connect: ' . mysqli_error($con) . mysqli_errno($con)); } $select = mysqli_query($con, "SELECT * FROM users"); echo mysqli_num_rows($select) . ' rows were selected.'; echo "<br/>"; while ($list = mysqli_fetch_assoc($select)) { echo 'Username : ' . $list['username'] . '<br>'; echo 'Password: ' . $list['password'] . '<br><br>'; } mysqli_close($con); ?> |
شما میتوانید به جای استفاده از key در آرایه از index هم استفاده کنید .
مدیریت اطلاعات ارسالی کاربران
برای جلوگیری از حملات sql injection حتما باید از تابع mysqli_real_escape_string استفاده کنیم . فرض کنید کاربر میخواهد ثبت نام کند و نام کاربری خود را برای ما ارسال می کند ، برای ثبت باید از کوئری زیر استفاده کنیم :
|
$query = "INSERT INTO users (username,password) VALUES ('" . mysqli_real_escape_string($con, $_POST['username']) . "','".mysqli_real_escape_string($con, $_POST['password'])."');"; |
پایان دوره مقدماتی
دوره مقدماتی آموزش PHP به پایان رسید ، اما همچنان PHP ادامه دارد … انشالله طی روز های آینده مباحث جدید تری مانند PDO , GD , MVC , OOP را در سایت قرار میدهیم پس همچنان با ما همراه باشید .