PDA

View Full Version : گرفتن بک اپ از دیتابیس و الصاق ان به بک اپ های قبلی



DelDard
سه شنبه 16 دی 1393, 18:26 عصر
سلام
من با کد زیر از یه تیبل بک اپ میگیرم




$table = 'members';
$return = null;
$db->exec("SET NAMES utf8");

$result = $db->prepare('SELECT * FROM '.$table);
$result->execute();
$num_fields = $result->columnCount();

$row2 = $db->prepare('SHOW CREATE TABLE '.$table);
$row2->execute();
$row2 = $row2->fetch(PDO::FETCH_NUM);
$return.= "\n\n".$row2[1].";\n\n";
while($row = $result->fetch(PDO::FETCH_NUM))
{
$return.= 'INSERT INTO '.$table.' VALUES(';
for($j=0; $j<$num_fields; $j++)
{
$row[$j] = addslashes($row[$j]);
$row[$j] = str_replace("\n","\\n",$row[$j]);
if (isset($row[$j])) { $return.= '"'.$row[$j].'"' ; } else { $return.= '""'; }
if ($j<($num_fields-1)) { $return.= ','; }
}
$return.= ");\n";
}
$return.="\n\n\n";
//save file
$file_name = substr(str_shuffle(md5(time())), 24).'.sql';
$handle = fopen(ROOT.'/back/'.$file_name,'w+');
fwrite($handle,$return);
fclose($handle);


فایل sql که به من میده چند خط اولش چنین چیزی هست



CREATE TABLE `members` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`date` varchar(30) NOT NULL,
`gender` varchar(10) NOT NULL,
`name` varchar(60) NOT NULL,
`family` varchar(60) NOT NULL,


حالا من که اینو از طریق phpmyadmin اپ میکن تو دیتابیسم که رو لوکال هست یه ارور بم میده با این معنی "چون تیبل ممبرز وجود داره نمیتونیم قبولش کنیم" که خوب طبیعی هم هست گویا. حالا سوال من اینه که اگه بخام هر بار که بکاپ میگیرم ریکورد های جدید رو به ریکورد هایی که قبلا گرفتم اضافه کنم باید چه کار کنم؟؟ یعنی منظورم اینه که اگه من هر بار از db یه بکاپ بگیرم و بعد db رو پاک کنم و دو باره وقتی db پر شد باز همین کار رو کنم و بعد تو لوکال همه این بکاپ ها (ریکوردها) رو بخام تو یه جدول واحد داشته باشم باس چی کار کنم؟؟
چی کار کنم که ریکورد ها رو از من بگیره و به انتهای جدول ممبرز اضافه کنه؟؟

پیشاپیش از راهنماییهاتون ممنونم

arenaw
چهارشنبه 17 دی 1393, 10:03 صبح
بخشی که مربوط به ساخت جدول هست رو توی همه بک‌آپ‌هاتون تغییر بدین به:

CREATE TABLE IF NOT EXISTS `members`


و بخش‌هایی که نوشته INSERT INTO رو تغییر بدین به:

INSERT IGNORE INTO


البته خودتون هم یه سرچی درباره INSERT IGNORE INTO و REPLACE INTO کنید که ببینید کدومش براتون مناسب‌تره.