با عرض سلام و وقت به خیر خدمت کاربران سایت پی وی لرن و کاربرانی که دوره ی آموزش php 7 را دنبال می کنند.
در جلسه گذشته آموزش وارد کردن چندین رکورد به MySQL را به طرفدارن و علاقمندان این دوره ارائه کردیم. در ادامه این دوره شما را به آموزش کار با دستور Prepared در php 7 دعوت می نماییم.
در جلسات گذشته آموختیم که می توان با PHP، شما به پایگاه داده ها متصل شوید و آن را دستکاری کرد.
و MySQL محبوب ترین سیستم پایگاه داده مورد استفاده در PHP است.
در ادامه یاد گرفتیم که می توان پایگاه داده MySQL را به php 7 متصل نمود.
نسخه php 5 و نسخه های بعدتر از آن می توانند از پایگاه داده MySQL زیر استفاده نماید:
نسخه های اولیه PHP از افزونه MySQL استفاده می کردند اما این افزونه در سال ۲۰۱۲ منسوخ شد.
در جلسه ۳۶ با آموزش ساخت MySQL در php 7 آشنا شدیم و آموختیم که :
یک پایگاه داده شامل یک یا چند جدول است و برای ایجاد یا حذف یک پایگاه داده MySQL، به مجوزهای ویژه CREATE نیاز خواهید داشت.
در جلسه بعد از آن از دستور CREATE TABLE برای ایجاد یک جدول در MySQL استفاده کردیم.
در جلسه ۳۸ نیز وارد کردن داده به MySQL در php 7 را فرا گرفتیم و در نهایت در جلسه ۳۹ نیز آموختیم که چگونه می توان ID و یا شناسه یک رکورد را پیدا کرد.
در جلسه گذشته نیز آموختیم که با روش PDO و MySQLi می توان چندین رکورد مختلف را به پایگاه داده MySQL وارد نمود.
دستور Prepared برای تزریق کدهای SQL بسیار مفید است.
یک دستور prepared در واقع ویژگی ای است که برای یک دستور SQL را با کارایی بالایی مکرراً اجرا می کند.
دستور Prepared عمدتاً به صورت زیر کار می کند.
در مقایسه با اجرای دستور SQL به طور مستقیم، دستور prepared سه مزیت اصلی دارد:
در آموزش کار با دستور Prepared در php 7 با این دستور هم در MySQLi و هم PDO آشنا می شویم.
مثال زیر از دستور prepared و پارامتر bound استفاده می کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 | <?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(); ?> |
توضیح خطوط کد برای مثال در بالا:
1 | "INSERT INTO MyGuests (firstname, lastname, email) VALUES (?, ?, ?)" |
در SQL ما یک علامت سوال (؟) را وارد می کنیم که در آن می خواهیم در یک عدد صحیح، رشته، double یا مقدار blob جایگزین کنیم.
حالا بیایید یک نگاه به تابع ()bind_param بی اندازیم.
1 | $stmt->bind_param("sss", $firstname, $lastname, $email); |
این تابع پارامترها را به query SQL متصل می کند و به پایگاه داده می گوید که پارامترها چه هستند.
آرگومان “sss” نوع داده هایی را که پارامترها هستند را لیست می کند.
کاراکتر S به mysql می گوید که پارامتر یک رشته است.
این آرگومان می تواند یکی از چهار نوع types باشد:
باید برای هر یک از پارامترها یکی از این موارد بالا را داشته باشیم.
با گفتن به mysql که نوع داده ای که در نظر گرفته می شود چیست؛ می توان ریسک تزریق SQL را کاهش داد.
اگر ما می خواهید داده ها را از منابع خارجی (مانند ورودی کاربر) وارد کنید پردازش و تایید داده ها بسیار مهم است.
آموزش کار با دستور Prepared در php 7را با دستور Prepared در PDO به پایان می رسانیم.
مثال زیر از دستور prepared و پارامترهای مرتبط در PDO استفاده می کند:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 | <?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; ?> |
در این جلسه به آموزش کار با دستور Prepared در php 7 پرداختیم.
در این جلسه آموختیم که یک دستور prepared در واقع ویژگی ای است که برای یک دستور SQL را با کارایی بالایی مکرراً اجرا می کند و ویژگی های خوبی دارد که اجرای SQL را تسهیل می نماید.
در جلسه بعد به انتخاب داده از MySQL می پردازیم.
با پی وی لرن همراه باشید.