شاید شما هم جزو آن دسته از افراد باشید که می خواید اطلاعات خود را در زبان برنامه نویسی PHP در بانک اطلاعاتی My SQL زخیره کنید. امروز با ما همراه باشید تا با آخرین متد و ایمن ترین روش زخیره سازی، ویرایش، حذف و خواندن اطلاعات با روش PDO آشنا شوید.
سه روش در زبان برنامه PHP جهت زخیره سازی اطلاعات در بانک اطلاعاتی ( دیتابیس ) وجود دارد که به ترتیب از قدیمی ترین تا آخرین متد جهت کار با داده ها در بانک اطلاعاتی را معرفی می نمائیم.
مقدمه:
اولین کاری که برای زخیره اطلاعات در دیتابیس می بایستی انجام داد ایجاد اتصال ( نوشتن کدی ) جهت اتصال به بانک اطلاعاتی ( دیتابیش ) می باشد. یکی از ساده ترین روش ها جهت سادگی و حرفه ای بودن ایجاد 4 متغیر می باشد که در هر جایی که نیاز به اتصال به بانک اطلاعاتی بود به جای نوشدن چندین باره تنها با نوشتن یک بار کار خود را راحت و آسان نمائیم.
ابتدا چهار متغیر با نام های servername , username, password, table را ایجاد می نمائیم که هر کدام به ترتیب معادل:
servername: نام هاست
username: نام کاربری هاست یا بانک اطلاعاتی
password: رمز عبور هاست و یا بانک اطلاعاتی
table: نام جدولی که اطلاعات در آن زخیره می گردد
توجه:
اگر اطلاعات را بر روی لوکال ( local ) یا همان کامپیوتر خود زخیره می نمائید معادل username بنویسید root و در مقابل password را خالی بگذارید.
کار با mysql():
انتخاب داده ها از پایگاه داده MySQL
دستور SELECT برای انتخاب داده از یک جدول استفاده می شود.
نحوه استفاده:
می توانیم با استفاده از نام ستون ها، تعداد محدودی از ستون های یک جدول را انتخاب کنیم:
SELECT column_name(s) FROM table_name
SELECT * FROM table_name
انتخاب داده ها با استفاده از MySQLi
در مثال زیر، ستون های id و firstname و lastname از جدول MyGuests در صفحه نمایش داده خواهند شد:
مثال(MySQLi Object-oriented)
$username = "username";
$password = "password";
$dbname = "myDB";
// ارتباط به پایگاه داده
$conn = new mysqli($servername, $username, $password, $dbname);
// مطمئن شدن از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
//اجرای کوئری و قرار دادن نتیجه در متغیر
$result = $conn->query($sql);
if ($result->num_rows > 0) {
// نمایش داده ها به ازای هر ردیف
while($row = $result->fetch_assoc()) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
";
}
} else {
echo "0 results";
}
//بستن ارتباط با پایگاه داده
$conn->close();
?>
خروجی کد بالا:
id: 2 - Name: Mary Moe
id: 3 - Name: Julie Dooley
توضیح مثال:
- ابتدا یک کوئری SQL را تنظیم کردیم که ستون های id و firstname و lastname از جدول MyGuests را انتخاب می کند. نتیجه اجرای کوئری توسط تابع ()query در متغیر result$ ذخیره می شود.
- حالا نتیجه کوئری در متغیر result$ است و می خواهیم که آنها را در خروجی نمایش دهیم، اما قبل از آن باید مطمئن شویم که کوئری ما نتیجه ای را در بر داشته است، بنابراین با استفاده از تابع ()num_rows چک می کنیم که ردیف ها بزرگتر از صفر باشد.
- با استفاده از تابع ()fetch_assoc ردیف اول داده ها برگردانده می شود، در یک اسکریبت با هر بار فراخوانی این تابع ردیف های بعدی بر می گردد.
- با استفاده از حلقه while و با هر بار فراخوانی تابع ()fetch_assoc نتیجه در متغیر row$ ذخیره می شود و این کار تا آخرین رکورد ادامه می یابد و اطلاعات ستون ها چاپ می شود.
در مثال زیر نیز با استفاده از روش MySQLi procedural ستون های id و firstname و lastname از جدول MyGuests در صفحه نمایش داده خواهند شد:
مثال(MySQLi Procedural)
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط با پایگاه داده
$conn = mysqli_connect($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = mysqli_query($conn, $sql);
if (mysqli_num_rows($result) > 0) {
// نمایش داده ها به ازای هر ردیف
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "
";
}
} else {
echo "0 results";
}
mysqli_close($conn);
?>
خروجی کد بالا:
id: 2 - Name: Mary Moe
id: 3 - Name: Julie Dooley
همچنین می توانید خروجی را در یک جدول HTML نمایش دهید:
مثال(MySQLi Object-oriented)
$username = "username";
$password = "password";
$dbname = "myDB";
// ایجاد ارتباط با پایگاه داده
$conn = new mysqli($servername, $username, $password, $dbname);
// اطمینان از صحت ارتباط
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
//تنظیم کوئری
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql);
if ($result->num_rows > 0) {
echo "";
// نمایش داده ها به ازای هر ردیف
while($row = $result->fetch_assoc()) {
echo "";
}
echo "
ID | Name |
---|---|
".$row["id"]." | ".$row["firstname"]." ".$row["lastname"]." |
} else {
echo "0 results";
}
$conn->close();
?>
خروجی کد بالا، البته با استایل زیر:
خروجی:
ID | Name |
---|---|
1 | John Doe |
2 | Mary Moe |
3 | Julie Dooley |
انتخاب داده ها با استفاده از PDO + دستورات آماده
در مثال زیر، از دستورات آماده (prepared statements) استفاده شده است.
در مثال زیر نیز با استفاده از روش PDO ستون های id و firstname و lastname از جدول MyGuests در یک جدول HTMLی نمایش داده خواهند شد:
مثال(PDO)
echo "";
class TableRows extends RecursiveIteratorIterator {
function __construct($it) {
parent::__construct($it, self::LEAVES_ONLY);
}
function current() {
return "";
}
function beginChildren() {
echo "";
}
function endChildren() {
echo "" . "\n";
}
}
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests");
$stmt->execute();
// set the resulting array to associative
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) {
echo $v;
}
}
catch(PDOException $e) {
echo "Error: " . $e->getMessage();
}
$conn = null;
echo "
Id | Firstname | Lastname |
---|---|---|
" . parent::current(). " | ||
?>
خروجی کد بالا:
Id | Firstname | Lastname |
---|---|---|
1 | John | Doe |
2 | Mary | Moe |
3 | Julie | Dooley |
منبع: beyamooz