logo
logo
تبلیغ کلیکی تاپ سایت 98

درج همزمان چند رکورد با prepare در php

درج همزمان چند رکورد با prepare در php
هدایت عباسی آموزش php

در این بخش از آموزش php از تاپ سایت 98 قصد داریم به آموزش درج همزمان چند رکورد با prepare در php به دو روش mysqli و pdo بپردازیم. برای هر روش یک مثال آورده ایم. کدها همه تست شده می باشد و بدرستی درج رکورد انجام می شود.

روش کار Prepared Statements

Prepared statements در برابر تزریق sql injection بسیار مفید است.

Prepared Statements ویژگی ای است که برای اجرای جمله های مشابه SQL بطور مکرر با راندمان بالا استفاده می شود.

مثلا اگر قصد دارید 3 رکورد را همزمان درج و ارسال نمایید می توانید از Prepared Statements استفاده نمایید.

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

INSERT INTO MyGuests VALUES(?, ?, ?)

دیتابیس تجزیه و تحلیل ، کامپایل و بهینه سازی پرس و جو را بدون اجرای آن ذخیره می کند.

 با Execute در دفعات بعدی ، مقادیر را ارسال می کند در مقایسه با اجرای دستورات SQL به طور مستقیم ، Prepare سه مزیت اصلی دارد:

مزایای Prepared Statements

حال به مزایای Prepared Statements می رسیم. 3 مزیت را با هم بررسی می کنیم.

Prepared Statements ، زمان تجزیه و تحلیل را کاهش می دهد زیرا تهیه پرس و جو فقط یک بار انجام می شود (اگرچه این بیانیه چندین بار اجرا شده است).

پارامترهای محدود ، پهنای باند را به حداقل می رساند زیرا باید هر بار فقط پارامترها را بفرستید ، و نه کل پرس و جو

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

درج رکورد با php بصورت امن

در این بخش قصد داریم درج رکورد با php بصورت امن را آموزش دهیم.

قصد داریم در این مثال از روش MySQLi with Prepared Statements استفاده کنیم.

ابتدا ارتباط با دیتابیس برقرار می کنیم. چنانچه اتصال دیتابیس برقرار شود با prepare عمل درج رکورد را با استفاده از دستور insert into انجام می دهیم.

قصد درج همزمان 3 رکورد را در جدول topsite98 و دیتابیس testphp1 داریم.

در بخش value به تعداد فیلدها علامت سوال می گذاریم.

در bind_param اگر مقدار رشته باشد حرف s می گذاریم و اگر عدد باشد حرف i می گذاریم.

سپس به متغیرها مقادیری داده می شود و سپس دستور execute اجرا می شود.

من در حدول topsite98 سه فیلد دارم id که auto increment است و خودکار وارد می شود پس نیاز نیست آن را وارد کنیم ، فیلد fname که برای نام و از نوع varchar است و فیلد numb که نمره و از نوع int است.

کد تست شده است و بدرستی عمل می کند.

مثال

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "testphp1";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}

$stmt = $conn->prepare("INSERT INTO topsite98 (fname, numb) VALUES (?, ?)");
$stmt->bind_param("si", $firstname, $numb);

$firstname = "omid";
$numb = 14;
$stmt->execute();

$firstname = "saeed";
$numb = 19;
$stmt->execute();

$firstname = "ahmad";
$numb = 12;
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>

خطای احتمالی

خطای احتمالی می تواند از اشتباه وارد کردن نام دیتابیس یا جدول باشد یا فیلدها در جدول شما چیز دیگیری باشد.

در هر دو روش mysqli و pdo به نوع فیلدهای رشته ای و عددی توجه نمایید.

وارد کردن همزمان چند رکورد در php

برای وارد کردن همزمان چند رکورد در php (درج همزمان چند رکورد) می توانید از prepare استفاده کنید.

در مثال زیر درج چند رکورد بصورت همزمان با روش pdo را مشاهده می کنید.

نام دیتابیس testphp1 و نام جدول topsite98 و دارای 3 فیلد id,fname , numbمی باشد که id چون خودکار وارد می شود نیاز به درج ندارد.

از try catch برای خطایابی در php استفاده می شود.

در صورت درج رکورد پیغام New records created successfully نمایش داده می شود.

مثال

<?php
$servername = "localhost";
$username = "root";
$password = "";
$dbname = "testphp1";

try {
$conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

$stmt = $conn->prepare("INSERT INTO topsite98 (fname, numb)
VALUES (:firstname, :numb)");
$stmt->bindParam(':firstname', $firstname);
$stmt->bindParam(':numb', $numb);

$firstname = "fateme";
$numb = 14;
$stmt->execute();
$firstname = "zahra";
$numb = 16;
$stmt->execute();
echo "New records created successfully";
}
catch(PDOException $e)
{
echo "Error: " . $e->getMessage();
}
$conn = null;
?>

کد بالا تست شده می باشد و درج با موفقیت انجام شده است.

امیدواریم این آموزش برای شما مفید باشد.

موفق باشید.

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

اگر سوال یا نظری دارید در بخش کامنت ها بنویسید.اگر موضوع خاصی مد نظر شماست که در سایت موجود نیست در بخش کامنت ها بنویسید

دوره ارز دیجیتال تاپ سایت 98
دوره های آموزشی دوره های آموزشی

نظرات کاربران

از دیدگاه مرتبط با موضوع استفاده نمایید.

از تبلیغ سایت یا شبکه اجتماعی خودداری فرمایید.

برای پاسخ گویی بهتر در سایت ثبت نام نمایید و سپس سوال خود را مطرح فرمایید.