PDA

View Full Version : ایجاد کلاس دیتابیس



mohamadali1374
پنج شنبه 02 بهمن 1393, 13:04 عصر
سلام
من دارم یه کلاس می نویسم که میخوام این کلاس طوری باشه که وقتی که مثلا خواستم یه مقداری رو به دیتابیس اضافه کنم فقط یه تابع رو صدا بزنم و نام دیتابیس؛ نام ستون های دیتابیس و مقادیر ورودی رو بفرستم حالا تابعی که وجود داره با pdo این مقدار رو به دیتابیس اضافه کنه
مثلا:
در صفحه insert:

include("class.php");
$con = new database;
$con->connection();
$con->insert("users",array("username","password","name","email"),array("mohamad","123","mo","no"));
و در صفحه کلاس:

class database{
function connection(){
$host="localhost";
$connect=new PDO("mysql:host=".$host.";dbname=pdo","root","");
$connect-> exec("SET NAMES utf8");
return $connect;
}
function insert($dbname,$arrayCN,$arrayVN){
$result5=$this->connection();

$i=0;
$sql="insert into '$dbname' ())values(:?)";

$result5->prepare($sql);

$result5->execute(

while($i){
array(
$arrayCN[$i]=>$arrayVN[$i];
if($arrayVN[$i+1])
break;
$i=$i+1;
}
));


}
}

البته این کلاس درست نیست فقط میخواستم سوال رو براتون توضیح بدم
حالا
1- آیا این کار؛ کار درستی است؟ یعنی بیام pdo رو با شی گرا قاطی کنم؟
2- آیا شما ایده ای برای این کار دارید؟ در واقع من این کار رو بخاطر این میخوام انجام بدم که از نوشتن کد های PDO در جاهای مختلف برنامه جلوگیری بشه و فقط توی یه خط کد و با فراخونی یه تابع و دادن ستون های دیتابیس مقادیر ورودی این کار انجام بشه.

MMSHFE
پنج شنبه 02 بهمن 1393, 13:28 عصر
البته فکر میکنم توی سؤالتون منظور از دیتابیس، همون جدول بوده چون دیتابیس که قاعدتاً ثابته. بهرحال چنین کدی میتونه کاری که میخواین رو انجام بده:

class DB {
private $pdo;

public function __construct()
{
// initialize the $this->pdo here to connect to DB
}

public function Insert($table, $fields)
{
$query = "INSERT INTO `{$table}` ";
// add field names
$fieldNames = array_keys($fields);
$query .= '(`' . implode('`,`', $fieldNames) . '`) ';
// add field values
$values = array_keys($fields);
$query .= 'VALUES (\'' . implode('\',\'', $values) . '\');';
$pdo->exec($query);
}
}

// usage:
$db = new DB;
$db->Insert('students', array('name'=>'alireza', 'family'=>'hoseini', 'average'=>15.5));
درصورت نیاز میتونید منطق کار رو تغییر بدین تا مواردی مثل Escape کردن و... رو بهش اضافه کنید.

plague
پنج شنبه 02 بهمن 1393, 23:54 عصر
البته ربطی به سوال شما نداره به شکل مستقیم
ولی از یک آرایه استفاده کنی جالب تره برای کلید ها ومقادیر بجای اینکه 2 تا آرایه بفرستی

من نمونش رو خیلی وقت پیش نوشته بودم .... یادم رفت جایی هم معرفیش کنم !
https://github.com/maxxxir/php-crud

mohamadali1374
یک شنبه 10 اسفند 1393, 21:02 عصر
سلام چند وقت پیش این تایپیک رو ایجاد کردم ولی وقت نشد روی این کلاس کار کنم تمام عملیات رو میتونم انجام بدم ولی مشکل اینجاست وقتی که اطلاعات رو از جدول select کردم چه جوری اون ها رو از کلاس بازگشت بدم ؟

mohamadali1374
چهارشنبه 13 اسفند 1393, 17:58 عصر
کسی نظری نداره؟

mohamadali1374
یک شنبه 17 اسفند 1393, 21:31 عصر
!!!!!!!!!!!!!!!!!!!!up:متفکر:

hamedarian2009
یک شنبه 17 اسفند 1393, 21:39 عصر
سلام چند وقت پیش این تایپیک رو ایجاد کردم ولی وقت نشد روی این کلاس کار کنم تمام عملیات رو میتونم انجام بدم ولی مشکل اینجاست وقتی که اطلاعات رو از جدول select کردم چه جوری اون ها رو از کلاس بازگشت بدم ؟

خب اطلاعات رو fetch کردی به صورت یک آرایه هست return میکنی و ازش استفاده میکنی