PDA

View Full Version : سوال: کار با BeginTrans در PHP



@AM!R!
یک شنبه 21 فروردین 1390, 10:58 صبح
سلام دوستان
بنظر شما مشکل کار کجاست!!؟؟



$db=mysql_pconnect("localhost","--------","------");
if(!$db)
{
echo "خطا در برقراری ارتباط با بانک اطلاعاتی";
exit;
}
mysql_select_db("----------",$db);
mysql_query("SET NAMES 'utf8'");
mysql_query("SET CHARACTER SET utf8");

$db.BeginTrans();

.
.
.

binyaft
یک شنبه 21 فروردین 1390, 11:44 صبح
همیچین چیزی در PHP هست اصلا!؟


$db.BeginTrans();

اینطوری باید باشه

$db->BeginTrans();

MMSHFE
یک شنبه 21 فروردین 1390, 13:01 عصر
با سلام، تا جايي كه بررسي كردم، از اين مورد بيشتر در ADO استفاده ميشه و براي اجراي چند Query پشت سر هم بكار ميره.
لينك (http://phplens.com/adodb/reference.functions.begintrans.html)
اما چرا اين كار رو انجام ميدين؟ با mysqli ميتونيد توسط دستور multi_query (http://ir.php.net/manual/en/mysqli.multi-query.php) چند Query رو كه با ; از هم جدا شدن اجرا كنيد و بعد با يك حلقه while تا وقتي كه more_result (http://ir.php.net/manual/en/mysqli.more-results.php) برقرار هست، توسط دستور next_result (http://ir.php.net/manual/en/mysqli.next-result.php) نتيجه اجراي Query بعدي رو بدست بيارين.
موفق باشيد.

امیـرحسین
یک شنبه 21 فروردین 1390, 21:55 عصر
با این تابع، Transaction رو شروع می‌کنیم.
Transaction برای زمانی کاربرد داره که بخوایم چند کوئری رو پشت سر هم اجرا کنیم که روی هم تاثیر دارند. بعد از فرمان شروع تراکنش اگر همه‌ی اطلاعات صحیح ثبت شدند با دستور COMMIT اطلاعات به شکل معمولی ثبت میشند و اگر از دستوری مثل ROLLBACK استفاده کنیم تغییرات اعمال نمیشند. این تابع شروع Transaction رو اعلام میکنه. مثلا:

mysql_query("START TRANSACTION");
$result = mysql_query("INSERT INTO parents SET name='Hello'");

if($result === false) {
mysql_query("ROLLBACK");
} else {
$parent = mysql_insert_id();
$result = mysql_query("INSERT INTO children SET parent=$parent, kind='test'");

if($result === false)
mysql_query("ROLLBACK");
else
mysql_query("COMMIT");
}

UnnamE
دوشنبه 22 فروردین 1390, 02:43 صبح
البته باس engine جدول InnoDB باشه

@AM!R!
دوشنبه 22 فروردین 1390, 09:48 صبح
این خط چکار میکنه؟


$parent = mysql_insert_id();

mtchabok
دوشنبه 22 فروردین 1390, 10:11 صبح
آخرین شماره آی دی که به صورت صعودی توسط mysql ایجاد شده رو بر میگردونه و نیاز به mysql link داره .

@AM!R!
چهارشنبه 24 فروردین 1390, 07:51 صبح
به چه کاری میاد؟

mtchabok
چهارشنبه 24 فروردین 1390, 09:55 صبح
در مواقعی نیاز میشه که ما فیلد آی دی رو به صورت دستی وارد نمیکنیم و به صورت اتوماتیک mysql ایجاد میکنه و برای اینکه شماره رو بدست بیاریم از این تابع استفاده میکنیم .