جلسه هجدهم PHP- دریافت آخرین شناسه در پایگاه داده MySQL - دستورات آماده PHP در MySQL

جلسه هجدهم PHP: آموزش کامل زبان برنامه نویسی پی اچ پی مقدماتی تا پیشرفته

در این مقاله از کدپز با جلسه هجدهم PHP که با دو موضوع دریافت آخرین شناسه در پایگاه داده MySQL

و
 آَشنایی با کاربرد دستورات آماده PHP در MySQL می باشد، در
خدمت شما هستیم.

در قسمت قبل در جلسه هفدهم PHP نحوه وارد کردن اطلاعات به صورت تکی و چند تایی در پایگاه داده MySQL را به طور کامل با ذکر مثال بیان کردیم.

هشتمین جلسه از PHP پیشرفته

در پایان این جلسه:

دستورات آماده PHP
در MySQL را بررسی خواهیم کرد.

و همچنین نحوه ی دریافت آخرین شناسه در پایگاه داده MySQL با زبان PHP را در جلسه هجدهم PHP
آموزش خواهید دید. با ما همراه باشید.

دریافت آخرین شناسه در پایگاه داده MySQL

اگر ویژگی 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;
?>

دستورات آماده PHP در MySQL

دستورات
آماده ای که بیان می کنیم بسیار پر کاربرد برای مقابله با SQL injection هستند.

معرفی دستورات آماده PHP و پارامتر های مرتبط با آن

یک
دستور آماده یک ویژگی ست که در مقابل استفاده چندین بار دستورات شبیه به هم SQL با راندمان
بالا استفاده می شود.

دستورات
آماده شده SQL عمدتاً به این صورت انجام می شوند:

به ۳ مورد زیر از جلسه هجدهم PHP توجه نمایید.

_ آماده سازی: یک دستور SQL  ایجاد شده و به پایگاه داده ارسال می شود. برخی مقادیر پارامتر هایی نامیده می شوند که به صورت نامشخص باقی می مانند. برای مثال:

INSERT INTO MyGuests VALUES(?, ?, ?)
  1. _ پایگاه داده دستور SQL را می خواند. و نتیجه را بدون اجرا آن ذخیره می کند. البته با استفاده از بهینه سازی query یا query optimization سریع ترین راه را برای اجرای آن مشخص می کند. اما به هر حال در آخر نتایج حاصل از query را بدون اجرای نهایی در حافظه نگهداری می کند.
  2. _ اجرا: در مرحله آخر، برنامه مقادیر را به پارامترها ارسال می کند حال پایگاه داده دستور SQL را اجرا می کند. برنامه می تواند یک دستور SQL را با value های متفاوت، به هرتعداد که بخواهد اجرا کند.

شما در حال آموزش و یادگیری جلسه هجدهم PHP می باشید.

در
مقایسه با اجرای دستورات SQL به صورت مستقیم، دستورات آماده ۳ ویژگی به خصوص دارند که در ادامه
جلسه هجدهم PHP به آن می پردازیم:

_ دستورات آماده، زمان پردازش کد
ها را کاهش می دهند. زیرا آماده سازی query تنها یک بار انجام می شود. (هرچند
دستور چند بار اجرا می شود).

_
پارامتر های متصل حجم ارسالی به سرور را 
بسیار کاهش می دهند. زیر در هر بار اجرا کد تنها نیاز به ارسال پارامتر ها
است و نه تمام query.

_ همانطور که پیش تر گفته شد دستورات آماده
بسیار پر کاربرد برای مقابله با SQL injection هستند. زیرا مقادیر پارامتر ها که با
استفاده از یک پروتکل مختلف منتقل می شوند، از حملات SQL جلوگیری می
کنند.

دستورات آماده SQL در mysqli

در مثال زیر از جلسه هجدهم 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-&gt;bind_param("sss", $firstname, $lastname, $email);

این
تابع پارامتر ها را به کوئری SQL ارسال می کند. و البته نوع پارامتر ها را به دیتابیس می گوید.
پارامتر “sss” نوع داده ها را لیست می کند. کاراکتر “s” نیز به دیتابیس متذکر می شود که با string سروکار دارد.

کاراکتر
این پارامتر می تواند یکی از ۴ نوع زیر باشد:

به
انواع آن از جلسه هجدهم PHP توجه نمایید.

_ i = integer

_ d = double

_ s = string

_ b = BLOB

هر پارامتر یکی از این ۴ نوع می باشد.

همچنین زمانی که نوع داده را حتما تعیین می کنیم، ریسک
حملات SQL
injection کاهش می یابد.

دستورات آماده SQL در PDO

در
مثال زیر از جلسه هجدهم 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 رفتن به مطلب