جلسه هجدهم PHP: آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته
در این مقاله از کدپز با جلسه هجدهم PHP که با دو موضوع دریافت آخرین شناسه در پایگاه داده MySQL
و
آَشنایی با کاربرد دستورات آماده PHP در MySQL می باشد، در
خدمت شما هستیم.
در قسمت قبل در جلسه هفدهم PHP نحوه وارد کردن اطلاعات به صورت تکی و چند تایی در پایگاه داده MySQL را به طور کامل با ذکر مثال بیان کردیم.
هشتمین جلسه از PHP پیشرفته
در پایان این جلسه:
دستورات آماده PHP
در MySQL را بررسی خواهیم کرد.
و همچنین نحوه ی دریافت آخرین شناسه در پایگاه داده MySQL با زبان PHP را در جلسه هجدهم PHP
آموزش خواهید دید. با ما همراه باشید.
اگر ویژگی AUTO_INCREMENT را در یک فیلد فعال باشد و ما دستور INSERT و یا UPDATE را اجرا کنیم، می توانیم بلافاصله ID آخرین شناسه وارد شده را دریافت کنیم. در مثال زیر ستون “id” در جدول “MyGuests” ویژگی AUTO_INCREMENT را دارا است.
CREATE TABLE MyGuests (
id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,
firstname VARCHAR(30) NOT NULL,
lastname VARCHAR(30) NOT NULL,
email VARCHAR(50),
reg_date TIMESTAMP
)
مثال
های زیر همانند مثال های جلسه هفدهم PHP می باشد. که در جلسه قبل ذکر شد. تنها یک خط جدید برای یافتن ID آخرین شناسه
وارد شده اضافی شده است. همچنین آخرین ID وارد شده را چاپ کردیم.
به ۳ مثال زیر از جلسه هجدهم PHP توجه کنید.
مثال اول: به صورت MySQL (شی گرایی):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if ($conn->query($sql) === TRUE) {
$last_id = $conn->insert_id;
echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
echo "Error: " . $sql . "<br>" . $conn->error;
}
$conn->close();
?>
مثال دوم از : به صورت MySQL (رویه ایی):
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);
// Check connection
if (!$conn) {
die("Connection failed: " . mysqli_connect_error());
}
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
if (mysqli_query($conn, $sql)) {
$last_id = mysqli_insert_id($conn);
echo "New record created successfully. Last inserted ID is: " . $last_id;
} else {
echo "Error: " . $sql . "<br>" . mysqli_error($conn);
}
mysqli_close($conn);
?>
مثال سوم از جلسه هجدهم PHP : به صورت PDO
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO MyGuests (firstname, lastname, email)
VALUES ('John', 'Doe', 'john@example.com')";
// use exec() because no results are returned
$conn->exec($sql);
$last_id = $conn->lastInsertId();
echo "New record created successfully. Last inserted ID is: " . $last_id;
}
catch(PDOException $e)
{
echo $sql . "<br>" . $e->getMessage();
}
$conn = null;
?>
دستورات
آماده ای که بیان می کنیم بسیار پر کاربرد برای مقابله با SQL injection هستند.
یک
دستور آماده یک ویژگی ست که در مقابل استفاده چندین بار دستورات شبیه به هم SQL با راندمان
بالا استفاده می شود.
دستورات
آماده شده SQL عمدتاً به این صورت انجام می شوند:
به ۳ مورد زیر از جلسه هجدهم PHP توجه نمایید.
_ آماده سازی: یک دستور SQL ایجاد شده و به پایگاه داده ارسال می شود. برخی مقادیر پارامتر هایی نامیده می شوند که به صورت نامشخص باقی می مانند. برای مثال:
INSERT INTO MyGuests VALUES(?, ?, ?)
در
مقایسه با اجرای دستورات SQL به صورت مستقیم، دستورات آماده ۳ ویژگی به خصوص دارند که در ادامه
جلسه هجدهم PHP به آن می پردازیم:
_ دستورات آماده، زمان پردازش کد
ها را کاهش می دهند. زیرا آماده سازی query تنها یک بار انجام می شود. (هرچند
دستور چند بار اجرا می شود).
_
پارامتر های متصل حجم ارسالی به سرور را
بسیار کاهش می دهند. زیر در هر بار اجرا کد تنها نیاز به ارسال پارامتر ها
است و نه تمام query.
_ همانطور که پیش تر گفته شد دستورات آماده
بسیار پر کاربرد برای مقابله با SQL injection هستند. زیرا مقادیر پارامتر ها که با
استفاده از یک پروتکل مختلف منتقل می شوند، از حملات SQL جلوگیری می
کنند.
در مثال زیر از جلسه هجدهم PHP ، از دستورات آماده و پارامتر های متصل در mysqli استفاده می شود.
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)");
$stmt->bind_param("sss", $firstname, $lastname, $email);
// set parameters and execute
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();
$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();
$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>
توضیح
قسمتی از کد بالا از جلسه هجدهم PHP :
"INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)"
در دستور SQL ما یک علامت سوال را در جایی که می خواهیم یک string و double را جایگزین کنیم، قرار داده ایم. حال به کد تابع ()bind_parap نگاه کنید.
$stmt->bind_param("sss", $firstname, $lastname, $email);
این
تابع پارامتر ها را به کوئری SQL ارسال می کند. و البته نوع پارامتر ها را به دیتابیس می گوید.
پارامتر “sss” نوع داده ها را لیست می کند. کاراکتر “s” نیز به دیتابیس متذکر می شود که با string سروکار دارد.
کاراکتر
این پارامتر می تواند یکی از ۴ نوع زیر باشد:
به
انواع آن از جلسه هجدهم PHP توجه نمایید.
_ i = integer
_ d = double
_ s = string
_ b = BLOB
هر پارامتر یکی از این ۴ نوع می باشد.
همچنین زمانی که نوع داده را حتما تعیین می کنیم، ریسک
حملات SQL
injection کاهش می یابد.
در
مثال زیر از جلسه هجدهم PHP ، از دستورات آماده و پارامتر های متصل در PDO استفاده می
شود.
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDBPDO";
try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// prepare sql and bind parameters
$stmt = $conn->prepare("INSERT INTO MyGuests (firstname, lastname, email)
VALUES (:firstname, :lastname, :email)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':lastname', $lastname);
$stmt->bindParam(':email', $email);
// insert a row
$firstname = "John";
$lastname = "Doe";
$email = "john@example.com";
$stmt->execute();
// insert another row
$firstname = "Mary";
$lastname = "Moe";
$email = "mary@example.com";
$stmt->execute();
// insert another row
$firstname = "Julie";
$lastname = "Dooley";
$email = "julie@example.com";
$stmt->execute();
echo "New records created successfully";
}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;
?>
تبریک میگم شما موفق شدید تا جلسه هجدهم PHP از کدپز را پشت سر بگذارید.
📝<<به خودت برای این همه راهی که اومدی افتخار کن و به خودت برای مسیری که باید بری ایمان داشته باش. . . . >> ☑️
جلسه معرفی | رفتن به مطلب | |
جلسه اول Php | رفتن به مطلب | |
جلسه دوم Php | رفتن به مطلب | |
جلسه سوم Php | رفتن به مطلب | |
جلسه چهارم PHP | رفتن به مطلب | |
جلسه پنجم PHP | رفتن به مطلب | |
جلسه ششم PHP | رفتن به مطلب | |
جلسه هفتم PHP | رفتن به مطلب | |
جلسه هشتم PHP | رفتن به مطلب | |
جلسه نهم PHP | رفتن به مطلب | |
جلسه دهم PHP - یادآوری فرم در html - فرم ها در PHP - آشنایی با متد های GET_$ و POST_$ | رفتن به مطلب | |
جلسه یازدهم PHP: شی گرایی - تعریف کلاس - ساخت اشیا فراخوانی تابع عضو | رفتن به مطلب | |
جلسه پانزدهم PHP: اتصال PHP به MySQL - (PDO یا MySQL) - بستن اتصال | رفتن به مطلب | |
جلسه هفدهم PHP : وارد کردن اطلاعات در MySQL با دو روش mysqli و PDO - به صورت رویه ای و شی گرایی | رفتن به مطلب | |
جلسه هجدهم PHP- دریافت آخرین شناسه در پایگاه داده MySQL - دستورات آماده PHP در MySQL | رفتن به مطلب | |
جلسه نوزدهم PHP: | رفتن به مطلب | |
جلسه بیست یکم PHP : XML - DOM - SimpleXML | رفتن به مطلب | |
جلسه بیست دوم PHP : | رفتن به مطلب | |
جلسه بیست سوم PHP : پایگاه داده و Ajax | رفتن به مطلب | |
جلسه بیست چهارم PHP : تمارین PHP | رفتن به مطلب | |
جلسه بیست پنجم PHP | رفتن به مطلب |