PDA

View Full Version : حرفه ای: ساخت فانکشن های Insert,Update به صورت داینامیک



alonemm
پنج شنبه 19 اسفند 1389, 12:32 عصر
باسلام:
من میخوام 2 تا فانکشن طراحی کنم که با گرفتن نام جدول و یک سری مثل پارامتر عملیات insert,update رو انجام بده به صورت داینامیک.

مثل:
نام جدول رو بگیره بعد مثل با آرایه ( یا هر نوع شی دیگه) نام فیلد هارو بگیره و جلوش هم مقادیرشو یعنی یجورایی یک کوئری داینامیک بسازم.



باتشکر.

hamedfarahabady
پنج شنبه 19 اسفند 1389, 13:57 عصر
اگه شما از phpmyadmin استفاده کنید این کار رو براتون امکان پذیر می کنه

Mr.Moghadam
پنج شنبه 19 اسفند 1389, 14:33 عصر
سلام
از تابع زیر استفاده کن برای insert


function insert($table, $insert_values) {

foreach($insert_values as $key=>$value) {
$keys[] = $key;
$insertvalues[] = "'".$value."'";
}

$keys = implode(',', $keys);
$insertvalues = implode(',', $insertvalues);
$sql="INSERT INTO $table ($keys) VALUES ($insertvalues)";
$result = mysql_query($sql)or die (mysql_error());

return mysql_insert_id();
}




به صورت زیر استفاده کن



$value = array("code"=>$_POST['code'],
"name"=>$_POST['name'],
"price"=>$_POST['price']);

insert("product",$value);



از این میتونی الگو بگیری برای تابع update

موفق باشی

shahriyar3
پنج شنبه 19 اسفند 1389, 14:38 عصر
از stored procedure هم ميتونيد استفاده كنيد
اينجا يه آموزش ساده ازش هست
http://www.sqlinfo.net/mysql/mysql_stored_procedure_INSERT.php

امیـرحسین
پنج شنبه 19 اسفند 1389, 23:52 عصر
نسخه قدیمی MODx (http://modx.com) از یک کلاس برای کار با mysql استفاده میکنه که شامل اینجور توابعی که مدنظر شماست هست.
یک نگاهی بهش بندازید بد نیست اگر بخواید ازش استفاده کنید کافیه modx$ رو توی این کلاس سرچ کنید و حذف کنید تا مستقل شه. نمونه‌ی استفاده‌اش هم شبیه زیره:

$db = new DBAPI('localhost','myDB','username','password');

// Escape
$id = $db->escape($_POST['id']);

// Select
$select = $db->select('name,age', 'users', "id=$id");
while($row = $db->getRow()) {
echo $row['name'];
}

// Insert
$insertData = array(
'name' => 'Amir Hossein',
'age' => 24,
'city' => 'Tehran'
);
$id = $db->insert($insertData, 'users');
echo "Last Insert ID: $id";

// Update
$updateData = array(
'name' => 'Amir',
'age' => 23,
);
$db->update($updateData, 'users', "id=$id");

// Delete
$db->delete('users', "id=7");

// Query
$select = $db->query("
SELECT users.name, profiles.age FROM users
LEFT JOIN profiles ON profiles.id=users.id
WHERE users.id=35
");


البته به من ثابت شده که API کردن توابع MySQL به این شکل تا حدی بی فایده است یعنی تاثیر چندانی توی بهبود کار نداره (معمولا) مگه اینکه API ها طوری طراحی بشه که آمادگی تغییر و توسعه رو داشته باشه! مثلا اگر روزی نیاز بود بجای MySQL از دیتابیس دیگه‌ای استفاده بشه، فقط با تغییر API این کار ممکن بشه.
من با Stored Procedure موافقتر هستم به شرطی که در حد بالایی ازش استفاده بشه. یعنی طوری Stored Procedure نوشته بشه که نیاز با هیچ کوئری مستقلی نباشه همیشه از Stored Procedureها استفاده بشه.