我正在跟蹤訪問者在許多類似網站上的移動,並且已經爲每個目標分配了跟蹤各種值的目標。由於這些目標是動態創建的,我還需要動態更新它們。 mysql結構的相關部分如下所示,它描述了2個站點上相同的4個目標。 注意:每個網站的目標總是相同的。MySQL的更新或插入取決於ID的存在
CREATE TABLE IF NOT EXISTS `goals` (
`idsite` int(11) NOT NULL,
`idgoal` int(11) NOT NULL,
`name` varchar(50) NOT NULL,
`allow_multiple` tinyint(4) NOT NULL,
`revenue` float NOT NULL,
PRIMARY KEY (`idsite`,`idgoal`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
INSERT INTO `goals` (`idsite`, `idgoal`, `name`, `allow_multiple`, `revenue`) VALUES
(10, 1, 'Product Benefits Video', 0, 2),
(10, 2, 'Agent Benefits Video', 0, 4),
(10, 3, 'Social Network Video', 0, 6),
(10, 4, 'MMP Overview Video', 1, 8),
(13, 1, 'Product Benefits Video', 0, 2),
(13, 2, 'Agent Benefits Video', 0, 4),
(13, 3, 'Social Network Video', 0, 6),
(13, 4, 'MMP Overview Video', 1, 8);
上述插入命令是從數組中創建的,並隨着site_id一起顯示。
$config['trackings'][1] = array('name'=>'Product Benefits Video', 'value'=>'2', 'multi'=>'0');
$config['trackings'][2] = array('name'=>'Agent Benefits Video', 'value'=>'3', 'multi'=>'0');
$config['trackings'][3] = array('name'=>'Social Network Video', 'value'=>'4', 'multi'=>'0');
$config['trackings'][4] = array('name'=>'MMP Overview Video', 'value'=>'5', 'multi'=>'1');
我永遠不會需要刪除的目標,但我想知道如何改變的值,如果目標不存在,將它添加到所有網站。
例如,如果我提供一個新的數組如下:
$config['trackings'][1] = array('name'=>'Product Benefits Video', 'value'=>'6', 'multi'=>'0');
$config['trackings'][2] = array('name'=>'Agent Benefits Video', 'value'=>'7', 'multi'=>'0');
$config['trackings'][3] = array('name'=>'Social Network Video', 'value'=>'8', 'multi'=>'1');
$config['trackings'][4] = array('name'=>'MMP Overview Video', 'value'=>'9', 'multi'=>'1');
$config['trackings'][5] = array('name'=>'MMP Details Video', 'value'=>'10', 'multi'=>'1');
我想補充的目標5和更新的價值觀和allow_multiple每個網站現有的目標。
我想過要截斷表並重寫所有的值從頭開始,但有成千上萬的網站。 我也玩過替換,插入更新,並最終拉出我的頭髮。
有沒有更簡單的方法來做到這一點,然後清空很多?
編輯: 最終的結果是這樣的
(10, 1, 'Product Benefits Video', 0, 6),
(10, 2, 'Agent Benefits Video', 0, 7),
(10, 3, 'Social Network Video', 1, 8),
(10, 4, 'MMP Overview Video', 1, 9),
(10, 5, 'MMP Details Video', 1, 10),
(13, 1, 'Product Benefits Video', 0, 6),
(13, 2, 'Agent Benefits Video', 0, 7),
(13, 3, 'Social Network Video', 1, 8),
(13, 4, 'MMP Overview Video', 1, 9);
(13, 5, 'MMP Details Video', 1, 10);
編輯:這將做所有的更新很容易
foreach($config['trackings'] as $id => $track)
{
$s = "UPDATE `goals` SET `revenue` = ".$track['value'].", `allow_multiple` = ".$track['multi']." WHERE `idgoal` = '".$id."'";
}
但如何在添加缺少的目標(5)同時?
輝煌,測試和工作就像一個魅力!我從來不知道我可以使用字符串作爲那樣的選擇。非常感謝你! – 2013-02-20 18:29:03
@AndyGee你好! – 2013-02-20 18:36:32