这是我的桌子likes
id type parent country votes
1 1 0 US 0 # This value need to be 9
2 2 1 US 6
19 3 1 US 3
3 3 2 US 3
7 3 2 US 3
4 10 3 US 1
5 10 3 US 1
6 10 3 US 1
10 10 7 US 1
9 10 7 US 1
8 10 7 US 1
20 10 19 US 1
21 10 19 US 1
22 10 19 US 1
我正在做一个脚本来更新表格中的总票数。
这里, type 10 updates type 3
, type 3 updates 2 and 1
,type 2 updates 1
当你运行我的脚本时,你会看到它是如何工作的。
在这里,id 1
需要为 9,并且不应该在每次脚本运行时刷新。其他人没有。但是我找不到一种方法来更新 1 而不使其价值加倍。
你能帮我想办法吗?
这是脚本。
$conn = connect();
$what = 10;
$pathType = 15;
while ( $pathType >=2 )
{
$stmt = $conn->prepare("select max(type) as type from likes where type < :type and country = 'US'");
$stmt->bindParam(':type', $pathType);
$stmt->execute();
$pathData = $stmt->fetch();
$pathType = $pathData['type'];
echo 'Path Type is '.$pathType.'<br>';
$stmt = $conn->prepare("select sum(votes) as votes, parent as parent from likes where type=:type group by parent");
$stmt->bindParam(':type', $pathData['type']);
$stmt->execute();
$rows = $stmt->rowCount();
while( $row = $stmt->fetch() ) {
echo $row['parent']." ".$row['votes'];
echo "<br>";
if($row['parent'] == 1){
echo 'Passed Level 1<br>';
$wtf = $conn->prepare("update likes set votes=votes+:votes where id=:parent");
}else{
$wtf = $conn->prepare("update likes set votes=:votes where id=:parent");
}
$wtf->bindParam(':votes', $row['votes']);
$wtf->bindParam(':parent', $row['parent']);
$wtf->execute();
}
echo "-----------------------------------------------<br>";
}
如果您需要它们,请在此处创建:
-- --------------------------------------------------------
-- Host: 127.0.0.1
-- Server version: 5.5.25 - MySQL Community Server (GPL)
-- Server OS: Win64
-- HeidiSQL version: 7.0.0.4053
-- Date/time: 2013-05-17 14:41:11
-- --------------------------------------------------------
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET NAMES utf8 */;
/*!40014 SET FOREIGN_KEY_CHECKS=0 */;
-- Dumping database structure for wwp-db
DROP DATABASE IF EXISTS `wwp-db`;
CREATE DATABASE IF NOT EXISTS `wwp-db` /*!40100 DEFAULT CHARACTER SET utf8 */;
USE `wwp-db`;
-- Dumping structure for table wwp-db.likes
DROP TABLE IF EXISTS `likes`;
CREATE TABLE IF NOT EXISTS `likes` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`type` tinyint(1) DEFAULT '0',
`parent` int(10) DEFAULT '0',
`country` varchar(2) DEFAULT NULL,
`votes` int(10) DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=4176 DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;
-- Dumping data for table wwp-db.likes: 14 rows
/*!40000 ALTER TABLE `likes` DISABLE KEYS */;
INSERT IGNORE INTO `likes` (`id`, `type`, `parent`, `country`, `votes`) VALUES
(1, 1, 0, 'US', 9),
(2, 2, 1, 'US', 6),
(3, 3, 2, 'US', 3),
(4, 10, 3, 'US', 1),
(5, 10, 3, 'US', 1),
(6, 10, 3, 'US', 1),
(7, 3, 2, 'US', 3),
(8, 10, 7, 'US', 1),
(9, 10, 7, 'US', 1),
(10, 10, 7, 'US', 1),
(19, 3, 1, 'US', 3),
(20, 10, 19, 'US', 1),
(21, 10, 19, 'US', 1),
(22, 10, 19, 'US', 1);
/*!40000 ALTER TABLE `likes` ENABLE KEYS */;
/*!40014 SET FOREIGN_KEY_CHECKS=1 */;
/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;