PDA

View Full Version : مبتدی: مثال استفاده از PDO در php



mohmmad6006
سه شنبه 08 مرداد 1392, 18:41 عصر
صفحه اول سایت من 8 بار تابع conncet رو فراخوانی میکنه همچنین تابع درون فایل include قرار داره

این تابع اتصال به دیتابیس رو داره وبعد از فراخوانی کوئری های مورد نظر رو اجرا میکنه

برای بهینه سازی میخوام تبدیل کنم به PDO ولی نمیتونم این کارو انجام بدم

اگه ممکنه یک اسکریپت که چندین کانکشن داره و از pdo استفاده کرده رو بزارید دانلود کنیم متوجه بشم ممنون

wallfa
سه شنبه 08 مرداد 1392, 19:10 عصر
اینجا ببین ! فکر نمیکنم به چیزی دیگه نیاز باشه اگر بود بگو تا بهت بگم .

http://www.php.net/manual/en/book.pdo.php

mohmmad6006
چهارشنبه 09 مرداد 1392, 04:15 صبح
اینجا ببین ! فکر نمیکنم به چیزی دیگه نیاز باشه اگر بود بگو تا بهت بگم .

http://www.php.net/manual/en/book.pdo.php

درسته اینجا هست ولی مشکل من اینه که بلد نیستم کلاس رو تو فایل connection تعریف کنم و جای دیگه اون رو require کنم و ازش استفاده کنم و query رو بنویسم

ببینید من میخوام کلاس اتصال به دیتابیس رو یک فایل باشه بعد تو یه فایل دیگه اونو require کنم
بعد مثلا 20 بار تو اون صفحه احتیاج دارم به دیتابیس کانکت بشم و کوئری های متفاوت اجرا کنم
این کارو چطور باید انجام بدم

مبتدی هستم یه توضیح ساده میخوام مثلا یه کوئری که تو mysql با mysql_fetch_object یا mysql_num_rows

2undercover
چهارشنبه 09 مرداد 1392, 08:43 صبح
برای مثال می تونید اینجوری عمل کنید:

فایل db.php :



// connect to the database
$db = new PDO('mysql:host=localhost;dbname=database;', 'root', '');


و مثلا اون فایلی که می خواید توش Query ها رو اجرا کنید:



require 'db.php';
// using prepared statement
$prepared_statement = $db->prepare('SELECT * FROM `table` WHERE (`field` = :value)');
$prepared_statement->execute(array(':value' => 'field_value'));
// without prepared statement
$db->exec('DELETE FROM `table`');
// or
$db->query('SELECT * FROM `table`');

mohmmad6006
چهارشنبه 09 مرداد 1392, 12:47 عصر
prepared statement کارش چیه؟

و اینکه من اگر این کوئری رو 20 بار تو صفحه اصلی اجرا کنم مشکلی پیش نمیاد؟

یعنی اصولش اینه؟

2undercover
چهارشنبه 09 مرداد 1392, 19:29 عصر
استفاده از Prepared Statement چند تا مزایا داره که چندتاش اینها هستش:

1. جلوگیری از SQL Injection چون مقادیر فیلد ها به طور مستقیم توی Query قرار نمی گیره!

2. اگر بخوایم یک Query رو چند بار توی صفحه با مقادیر مختلف اجرا کنیم هم به کار میاد و فقط کافیه با متد execute اون Query رو با مقادیر متفاوت اجرا کنیم!

و اینکه چند بار یک Query رو توی صفحه اجرا کنید این بستگی به این داره که Query ها مربوط به چی هستن؟!

mohmmad6006
پنج شنبه 10 مرداد 1392, 09:33 صبح
استفاده از Prepared Statement چند تا مزایا داره که چندتاش اینها هستش:

1. جلوگیری از SQL Injection چون مقادیر فیلد ها به طور مستقیم توی Query قرار نمی گیره!

2. اگر بخوایم یک Query رو چند بار توی صفحه با مقادیر مختلف اجرا کنیم هم به کار میاد و فقط کافیه با متد execute اون Query رو با مقادیر متفاوت اجرا کنیم!

و اینکه چند بار یک Query رو توی صفحه اجرا کنید این بستگی به این داره که Query ها مربوط به چی هستن؟!

خوب کوئری select هستن چند تا تیبل جدا سلکت میشه و اطلاعاتش نشون داده میشه

2undercover
جمعه 11 مرداد 1392, 11:49 صبح
خوب تا جایی که میشه باید تعداد Query ها رو توی صفحه کم کرد و تا جای ممکن بهینه شون کرد ولی اگه Query ها به هم مربوط نباشه خوب چاره ای نیست.