diff --git a/inc/functions.php b/inc/functions.php
index b52c58fb..2cbf3e6b 100644
--- a/inc/functions.php
+++ b/inc/functions.php
@@ -244,7 +244,7 @@ function rebuildThemes($action, $board = false) {
 	// List themes
 	$query = query("SELECT `theme` FROM `theme_settings` WHERE `name` IS NULL AND `value` IS NULL") or error(db_error());
 
-	while ($theme = $query->fetch()) {
+	while ($theme = $query->fetch(PDO::FETCH_ASSOC)) {
 		rebuildTheme($theme['theme'], $action, $board);
 	}
 }
@@ -282,7 +282,7 @@ function themeSettings($theme) {
 	$query->execute() or error(db_error($query));
 
 	$settings = array();
-	while ($s = $query->fetch()) {
+	while ($s = $query->fetch(PDO::FETCH_ASSOC)) {
 		$settings[$s['name']] = $s['value'];
 	}
 
@@ -352,7 +352,7 @@ function getBoardInfo($uri) {
 	$query->bindValue(':uri', $uri);
 	$query->execute() or error(db_error($query));
 	
-	if ($board = $query->fetch()) {
+	if ($board = $query->fetch(PDO::FETCH_ASSOC)) {
 		if ($config['cache']['enabled'])
 			cache::set('board_' . $uri, $board);
 		return $board;
@@ -544,7 +544,7 @@ function checkFlood($post) {
 	$query->bindValue(':floodsametime', time()-$config['flood_time_same'], PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
 	
-	$flood = (bool)$query->fetch();
+	$flood = (bool) $query->fetch(PDO::FETCH_ASSOC);
 	
 	if (event('check-flood', $post))
 		return true;
@@ -648,7 +648,7 @@ function checkBan($board = 0) {
 		$query->execute() or error(db_error($query));
 	}
 	
-	if ($ban = $query->fetch()) {
+	if ($ban = $query->fetch(PDO::FETCH_ASSOC)) {
 		if ($ban['expires'] && $ban['expires'] < time()) {
 			// Ban expired
 			$query = prepare("DELETE FROM `bans` WHERE `id` = :id");
@@ -686,12 +686,12 @@ function threadLocked($id) {
 	$query->bindValue(':id', $id, PDO::PARAM_INT);
 	$query->execute() or error(db_error());
 	
-	if (!$post = $query->fetch()) {
+	if (($locked = $query->fetchColumn()) === false) {
 		// Non-existant, so it can't be locked...
 		return false;
 	}
 	
-	return (bool)$post['locked'];
+	return (bool)$locked;
 }
 
 function threadSageLocked($id) {
@@ -704,12 +704,12 @@ function threadSageLocked($id) {
 	$query->bindValue(':id', $id, PDO::PARAM_INT);
 	$query->execute() or error(db_error());
 	
-	if (!$post = $query->fetch()) {
+	if (($sagelocked = $query->fetchColumn()) === false) {
 		// Non-existant, so it can't be locked...
 		return false;
 	}
 	
-	return (bool) $post['sage'];
+	return (bool)$sagelocked;
 }
 
 function threadExists($id) {
@@ -843,7 +843,7 @@ function deleteFile($id, $remove_entirely_if_already=true) {
 	$query = prepare(sprintf("SELECT `thread`,`thumb`,`file` FROM `posts_%s` WHERE `id` = :id LIMIT 1", $board['uri']));
 	$query->bindValue(':id', $id, PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
-	if (!$post = $query->fetch())
+	if (!$post = $query->fetch(PDO::FETCH_ASSOC))
 		error($config['error']['invalidpost']);
 	
 	if ($post['file'] == 'deleted' && !$post['thread'])
@@ -881,7 +881,7 @@ function rebuildPost($id) {
 	$query->bindValue(':id', $id, PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
 	
-	if ((!$post = $query->fetch()) || !$post['body_nomarkup'])
+	if ((!$post = $query->fetch(PDO::FETCH_ASSOC)) || !$post['body_nomarkup'])
 		return false;
 	
 	markup($body = &$post['body_nomarkup']);
@@ -914,7 +914,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) {
 	$ids = array();
 	
 	// Delete posts and maybe replies
-	while ($post = $query->fetch()) {
+	while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 		if (!$post['thread']) {
 			// Delete thread HTML page
 			file_unlink($board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $post['id']));
@@ -947,7 +947,7 @@ function deletePost($id, $error_if_doesnt_exist=true, $rebuild_after=true) {
 	$query = prepare("SELECT `board`, `post` FROM `cites` WHERE `target_board` = :board AND (`target` = " . implode(' OR `target` = ', $ids) . ")");
 	$query->bindValue(':board', $board['uri']);
 	$query->execute() or error(db_error($query));
-	while ($cite = $query->fetch()) {
+	while ($cite = $query->fetch(PDO::FETCH_ASSOC)) {
 		if ($board['uri'] != $cite['board']) {
 			if (!isset($tmp_board))
 				$tmp_board = $board['uri'];
@@ -980,7 +980,7 @@ function clean() {
 	$query->bindValue(':offset', $offset, PDO::PARAM_INT);
 	
 	$query->execute() or error(db_error($query));
-	while ($post = $query->fetch()) {
+	while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 		deletePost($post['id']);
 	}
 }
@@ -1002,8 +1002,7 @@ function index($page, $mod=false) {
 	if ($query->rowCount() < 1 && $page > 1)
 		return false;
 
-	$threads = array();
-	while ($th = $query->fetch()) {
+	while ($th = $query->fetch(PDO::FETCH_ASSOC)) {
 		$thread = new Thread(
 			$th['id'], $th['subject'], $th['email'], $th['name'], $th['trip'], $th['capcode'], $th['body'], $th['time'], $th['thumb'],
 			$th['thumbwidth'], $th['thumbheight'], $th['file'], $th['filewidth'], $th['fileheight'], $th['filesize'], $th['filename'], $th['ip'],
@@ -1120,7 +1119,7 @@ function getPages($mod=false) {
 		$count = $board['thread_count'];
 	} else {
 		// Count threads
-		$query = query(sprintf("SELECT COUNT(`id`) FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error());
+		$query = query(sprintf("SELECT COUNT(*) FROM `posts_%s` WHERE `thread` IS NULL", $board['uri'])) or error(db_error());
 		$count = $query->fetchColumn();
 	}
 	$count = floor(($config['threads_per_page'] + $count - 1) / $config['threads_per_page']);
@@ -1160,7 +1159,7 @@ function checkRobot($body) {
 	$query->bindValue(':hash', $body);
 	$query->execute() or error(db_error($query));
 	
-	if ($query->fetch()) {
+	if ($query->fetchColumn()) {
 		return true;
 	}
 
@@ -1168,20 +1167,19 @@ function checkRobot($body) {
 	$query = prepare("INSERT INTO `robot` VALUES (:hash)");
 	$query->bindValue(':hash', $body);
 	$query->execute() or error(db_error($query));
+	
 	return false;
 }
 
 // Returns an associative array with 'replies' and 'images' keys
 function numPosts($id) {
 	global $board;
-	$query = prepare(sprintf("SELECT COUNT(*) as `num` FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(*) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $board['uri'], $board['uri']));
+	$query = prepare(sprintf("SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = :thread UNION ALL SELECT COUNT(*) FROM `posts_%s` WHERE `file` IS NOT NULL AND `thread` = :thread", $board['uri'], $board['uri']));
 	$query->bindValue(':thread', $id, PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
 	
-	$num_posts = $query->fetch();
-	$num_posts = $num_posts['num'];
-	$num_images = $query->fetch();
-	$num_images = $num_images['num'];
+	$num_posts = $query->fetchColumn();
+	$num_images = $query->fetchColumn();
 	
 	return array('replies' => $num_posts, 'images' => $num_images);
 }
@@ -1193,14 +1191,14 @@ function muteTime() {
 		return $time;
 	
 	// Find number of mutes in the past X hours
-	$query = prepare("SELECT COUNT(*) as `count` FROM `mutes` WHERE `time` >= :time AND `ip` = :ip");
+	$query = prepare("SELECT COUNT(*) FROM `mutes` WHERE `time` >= :time AND `ip` = :ip");
 	$query->bindValue(':time', time()-($config['robot_mute_hour']*3600), PDO::PARAM_INT);
 	$query->bindValue(':ip', $_SERVER['REMOTE_ADDR']);
 	$query->execute() or error(db_error($query));
 	
-	$result = $query->fetch();
-	if ($result['count'] == 0) return 0;
-	return pow($config['robot_mute_multiplier'], $result['count']);
+	if (!$result = $query->fetchColumn())
+		return 0;
+	return pow($config['robot_mute_multiplier'], $result);
 }
 
 function mute() {
@@ -1230,7 +1228,7 @@ function checkMute() {
 		$query->bindValue(':ip', $_SERVER['REMOTE_ADDR']);
 		$query->execute() or error(db_error($query));
 		
-		if (!$mute = $query->fetch()) {
+		if (!$mute = $query->fetch(PDO::FETCH_ASSOC)) {
 			// What!? He's muted but he's not muted...
 			return;
 		}
@@ -1543,7 +1541,7 @@ function markup(&$body, $track_cites = false) {
 				$match[1] = mb_strlen(substr($body_tmp, 0, $match[1]));
 			}
 			
-			if ($post = $query->fetch()) {
+			if ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 				$replacement = '<a onclick="highlightReply(\''.$cite.'\');" href="' .
 					$config['root'] . $board['dir'] . $config['dir']['res'] . ($post['thread']?$post['thread']:$post['id']) . '.html#' . $cite . '">' .
 						'&gt;&gt;' . $cite .
@@ -1586,7 +1584,7 @@ function markup(&$body, $track_cites = false) {
 					$query->bindValue(':id', $cite);
 					$query->execute() or error(db_error($query));
 					
-					if ($post = $query->fetch()) {
+					if ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 						$replacement = '<a onclick="highlightReply(\''.$cite.'\');" href="' .
 							$config['root'] . $board['dir'] . $config['dir']['res'] . ($post['thread']?$post['thread']:$post['id']) . '.html#' . $cite . '">' .
 								'&gt;&gt;&gt;/' . $_board . '/' . $cite .
@@ -1695,7 +1693,7 @@ function buildThread($id, $return = false, $mod = false) {
 	$query->bindValue(':id', $id, PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
 	
-	while ($post = $query->fetch()) {
+	while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 		if (!isset($thread)) {
 			$thread = new Thread(
 				$post['id'], $post['subject'], $post['email'], $post['name'], $post['trip'], $post['capcode'], $post['body'], $post['time'],
@@ -1836,7 +1834,7 @@ function getPostByHash($hash) {
 	$query->bindValue(':hash', $hash, PDO::PARAM_STR);
 	$query->execute() or error(db_error($query));
 	
-	if ($post = $query->fetch()) {
+	if ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 		return $post;
 	}
 	
@@ -1850,7 +1848,7 @@ function getPostByHashInThread($hash, $thread) {
 	$query->bindValue(':thread', $thread, PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
 	
-	if ($post = $query->fetch()) {
+	if ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 		return $post;
 	}
 	
diff --git a/inc/mod/auth.php b/inc/mod/auth.php
index 1bc27dff..a0986a1f 100644
--- a/inc/mod/auth.php
+++ b/inc/mod/auth.php
@@ -147,7 +147,7 @@ function create_pm_header() {
 	$query->bindValue(':id', $mod['id'], PDO::PARAM_INT);
 	$query->execute() or error(db_error($query));
 	
-	if ($pm = $query->fetch())
+	if ($pm = $query->fetch(PDO::FETCH_ASSOC))
 		$header = array('id' => $pm['id'], 'waiting' => $query->rowCount() - 1);
 	else
 		$header = true;
diff --git a/inc/mod/pages.php b/inc/mod/pages.php
index 0eadd6ad..d533460e 100644
--- a/inc/mod/pages.php
+++ b/inc/mod/pages.php
@@ -96,14 +96,14 @@ function mod_dashboard() {
 		$query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :id AND `unread` = 1');
 		$query->bindValue(':id', $mod['id']);
 		$query->execute() or error(db_error($query));
-		$args['unread_pms'] = $query->fetchColumn(0);
+		$args['unread_pms'] = $query->fetchColumn();
 		
 		if ($config['cache']['enabled'])
 			cache::set('pm_unreadcount_' . $mod['id'], $args['unread_pms']);
 	}
 	
 	$query = query('SELECT COUNT(*) FROM `reports`') or error(db_error($query));
-	$args['reports'] = $query->fetchColumn(0);
+	$args['reports'] = $query->fetchColumn();
 	
 	if ($mod['type'] >= ADMIN && $config['check_updates']) {
 		if (!$config['version'])
@@ -536,7 +536,7 @@ function mod_noticeboard($page_no = 1) {
 	
 	$query = prepare("SELECT COUNT(*) FROM `noticeboard`");
 	$query->execute() or error(db_error($query));
-	$count = $query->fetchColumn(0);
+	$count = $query->fetchColumn();
 	
 	mod_page(_('Noticeboard'), 'mod/noticeboard.html', array('noticeboard' => $noticeboard, 'count' => $count));
 }
@@ -597,7 +597,7 @@ function mod_news($page_no = 1) {
 	
 	$query = prepare("SELECT COUNT(*) FROM `news`");
 	$query->execute() or error(db_error($query));
-	$count = $query->fetchColumn(0);
+	$count = $query->fetchColumn();
 	
 	mod_page(_('News'), 'mod/news.html', array('news' => $news, 'count' => $count));
 }
@@ -637,7 +637,7 @@ function mod_log($page_no = 1) {
 	
 	$query = prepare("SELECT COUNT(*) FROM `modlogs`");
 	$query->execute() or error(db_error($query));
-	$count = $query->fetchColumn(0);
+	$count = $query->fetchColumn();
 	
 	mod_page(_('Moderation log'), 'mod/log.html', array('logs' => $logs, 'count' => $count));
 }
@@ -664,7 +664,7 @@ function mod_user_log($username, $page_no = 1) {
 	$query = prepare("SELECT COUNT(*) FROM `modlogs` LEFT JOIN `mods` ON `mod` = `mods`.`id` WHERE `username` = :username");
 	$query->bindValue(':username', $username);
 	$query->execute() or error(db_error($query));
-	$count = $query->fetchColumn(0);
+	$count = $query->fetchColumn();
 	
 	mod_page(_('Moderation log'), 'mod/log.html', array('logs' => $logs, 'count' => $count, 'username' => $username));
 }
@@ -906,7 +906,7 @@ function mod_bans($page_no = 1) {
 	
 	$query = prepare("SELECT COUNT(*) FROM `bans`");
 	$query->execute() or error(db_error($query));
-	$count = $query->fetchColumn(0);
+	$count = $query->fetchColumn();
 	
 	foreach ($bans as &$ban) {
 		if (filter_var($ban['ip'], FILTER_VALIDATE_IP) !== false)
@@ -1058,7 +1058,7 @@ function mod_move($originBoard, $postID) {
 		
 		$replies = array();
 		
-		while ($post = $query->fetch()) {
+		while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 			$post['mod'] = true;
 			$post['thread'] = $newID;
 			
@@ -1222,7 +1222,7 @@ function mod_ban_post($board, $delete, $post, $token = false) {
 			$_POST['message'] = str_replace('%LENGTH%', strtoupper($length_english), $_POST['message']);
 			$query = prepare(sprintf('UPDATE `posts_%s` SET `body_nomarkup` = CONCAT(`body_nomarkup`, :body_nomarkup) WHERE `id` = :id', $board));
 			$query->bindValue(':id', $post);
-			$query->bindValue(':body_nomarkup', sprintf('<tinyboard ban message>%s</tinyboard>', $_POST['message']));
+			$query->bindValue(':body_nomarkup', sprintf("\n<tinyboard ban message>%s</tinyboard>", $_POST['message']));
 			$query->execute() or error(db_error($query));
 			rebuildPost($post);
 			
@@ -1369,7 +1369,7 @@ function mod_deletebyip($boardName, $post, $global = false) {
 	$query = prepare(sprintf('SELECT `ip` FROM `posts_%s` WHERE `id` = :id', $boardName));
 	$query->bindValue(':id', $post);
 	$query->execute() or error(db_error($query));
-	if (!$ip = $query->fetchColumn(0))
+	if (!$ip = $query->fetchColumn())
 		error($config['error']['invalidpost']);
 	
 	$boards = $global ? listBoards() : array(array('uri' => $boardName));
@@ -1391,7 +1391,7 @@ function mod_deletebyip($boardName, $post, $global = false) {
 	
 	$threads_to_rebuild = array();
 	$threads_deleted = array();
-	while ($post = $query->fetch()) {
+	while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 		openBoard($post['board']);
 		
 		deletePost($post['id'], false, false);
@@ -1688,7 +1688,7 @@ function mod_inbox() {
 	$query = prepare('SELECT COUNT(*) FROM `pms` WHERE `to` = :mod AND `unread` = 1');
 	$query->bindValue(':mod', $mod['id']);
 	$query->execute() or error(db_error($query));
-	$unread = $query->fetchColumn(0);
+	$unread = $query->fetchColumn();
 	
 	foreach ($messages as &$message) {
 		$message['snippet'] = pm_snippet($message['message']);
@@ -1710,12 +1710,12 @@ function mod_new_pm($username) {
 	$query = prepare("SELECT `id` FROM `mods` WHERE `username` = :username");
 	$query->bindValue(':username', $username);
 	$query->execute() or error(db_error($query));
-	if (!$id = $query->fetchColumn(0)) {
+	if (!$id = $query->fetchColumn()) {
 		// Old style ?/PM: by user ID
 		$query = prepare("SELECT `username` FROM `mods` WHERE `id` = :username");
 		$query->bindValue(':username', $username);
 		$query->execute() or error(db_error($query));
-		if ($username = $query->fetchColumn(0))
+		if ($username = $query->fetchColumn())
 			header('Location: ?/new_PM/' . $username, true, $config['redirect_http']);
 		else
 			error($config['error']['404']);
@@ -1836,7 +1836,7 @@ function mod_reports() {
 		$report_posts[$board] = array();
 		
 		$query = query(sprintf('SELECT * FROM `posts_%s` WHERE `id` = ' . implode(' OR `id` = ', $posts), $board)) or error(db_error());
-		while ($post = $query->fetch()) {
+		while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 			$report_posts[$board][$post['id']] = $post;
 		}
 	}
@@ -2173,10 +2173,10 @@ function mod_debug_antispam() {
 	}
 	
 	$query = query('SELECT COUNT(*) FROM `antispam`' . ($where ? " WHERE $where" : '')) or error(db_error());
-	$args['total'] = number_format($query->fetchColumn(0));
+	$args['total'] = number_format($query->fetchColumn());
 	
 	$query = query('SELECT COUNT(*) FROM `antispam` WHERE `expires` IS NOT NULL' . ($where ? " AND $where" : '')) or error(db_error());
-	$args['expiring'] = number_format($query->fetchColumn(0));
+	$args['expiring'] = number_format($query->fetchColumn());
 	
 	$query = query('SELECT * FROM `antispam` ' . ($where ? "WHERE $where" : '') . ' ORDER BY `passed` DESC LIMIT 40') or error(db_error());
 	$args['top'] = $query->fetchAll(PDO::FETCH_ASSOC);
diff --git a/post.php b/post.php
index 42e2bfcc..31de7ecb 100644
--- a/post.php
+++ b/post.php
@@ -52,7 +52,7 @@ if (isset($_POST['delete'])) {
 		$query->bindValue(':id', $id, PDO::PARAM_INT);
 		$query->execute() or error(db_error($query));
 		
-		if ($post = $query->fetch()) {
+		if ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 			if ($password != '' && $post['password'] != $password)
 				error($config['error']['invalidpassword']);
 			
@@ -116,12 +116,12 @@ if (isset($_POST['delete'])) {
 		$query->bindValue(':id', $id, PDO::PARAM_INT);
 		$query->execute() or error(db_error($query));
 		
-		$post = $query->fetch();
+		$thread = $query->fetchColumn();
 		
-		if ($post) {
+		if ($thread) {
 			if ($config['syslog'])
 				_syslog(LOG_INFO, 'Reported post: ' .
-					'/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $post['thread'] ? $post['thread'] : $id) . ($post['thread'] ? '#' . $id : '') .
+					'/' . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], $thread ? $thread : $id) . ($thread ? '#' . $id : '') .
 					' for "' . $reason . '"'
 				);
 			$query = prepare("INSERT INTO `reports` VALUES (NULL, :time, :ip, :board, :post, :reason)");
@@ -233,7 +233,7 @@ if (isset($_POST['delete'])) {
 		$query->bindValue(':id', $post['thread'], PDO::PARAM_INT);
 		$query->execute() or error(db_error());
 		
-		if (!$thread = $query->fetch()) {
+		if (!$thread = $query->fetch(PDO::FETCH_ASSOC)) {
 			// Non-existant
 			error($config['error']['nonexistant']);
 		}
diff --git a/templates/themes/catalog/theme.php b/templates/themes/catalog/theme.php
index e585cf17..5c9f6769 100644
--- a/templates/themes/catalog/theme.php
+++ b/templates/themes/catalog/theme.php
@@ -39,7 +39,7 @@
 			
 			$query = query(sprintf("SELECT *, `id` AS `thread_id`, (SELECT COUNT(*) FROM `posts_%s` WHERE `thread` = `thread_id`) AS `reply_count`, '%s' AS `board` FROM `posts_%s` WHERE `thread` IS NULL ORDER BY `bump` DESC", $board_name, $board_name, $board_name)) or error(db_error());
 			
-			while ($post = $query->fetch()) {
+			while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 				$post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id']));
 				$post['board_name'] = $board['name'];
 				$post['file'] = $config['uri_thumb'] . $post['thumb'];
diff --git a/templates/themes/recent/theme.php b/templates/themes/recent/theme.php
index 75907e77..98fabfa1 100644
--- a/templates/themes/recent/theme.php
+++ b/templates/themes/recent/theme.php
@@ -47,7 +47,7 @@
 			$query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_images'], $query);
 			$query = query($query) or error(db_error());
 			
-			while ($post = $query->fetch()) {
+			while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 				openBoard($post['board']);
 				
 				// board settings won't be available in the template file, so generate links now
@@ -67,7 +67,7 @@
 			$query = preg_replace('/UNION ALL $/', 'ORDER BY `time` DESC LIMIT ' . (int)$settings['limit_posts'], $query);
 			$query = query($query) or error(db_error());
 			
-			while ($post = $query->fetch()) {
+			while ($post = $query->fetch(PDO::FETCH_ASSOC)) {
 				openBoard($post['board']);
 				
 				$post['link'] = $config['root'] . $board['dir'] . $config['dir']['res'] . sprintf($config['file_page'], ($post['thread'] ? $post['thread'] : $post['id'])) . '#' . $post['id'];
@@ -78,7 +78,7 @@
 			}
 			
 			// Total posts
-			$query = 'SELECT SUM(`top`) AS `count` FROM (';
+			$query = 'SELECT SUM(`top`) FROM (';
 			foreach ($boards as &$_board) {
 				if (in_array($_board['uri'], $this->excluded))
 					continue;
@@ -86,11 +86,10 @@
 			}
 			$query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query);
 			$query = query($query) or error(db_error());
-			$res = $query->fetch();
-			$stats['total_posts'] = number_format($res['count']);
+			$stats['total_posts'] = number_format($query->fetchColumn());
 			
 			// Unique IPs
-			$query = 'SELECT COUNT(DISTINCT(`ip`)) AS `count` FROM (';
+			$query = 'SELECT COUNT(DISTINCT(`ip`)) FROM (';
 			foreach ($boards as &$_board) {
 				if (in_array($_board['uri'], $this->excluded))
 					continue;
@@ -98,11 +97,10 @@
 			}
 			$query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query);
 			$query = query($query) or error(db_error());
-			$res = $query->fetch();
-			$stats['unique_posters'] = number_format($res['count']);
+			$stats['unique_posters'] = number_format($query->fetchColumn());
 			
 			// Active content
-			$query = 'SELECT SUM(`filesize`) AS `count` FROM (';
+			$query = 'SELECT SUM(`filesize`) FROM (';
 			foreach ($boards as &$_board) {
 				if (in_array($_board['uri'], $this->excluded))
 					continue;
@@ -110,8 +108,7 @@
 			}
 			$query = preg_replace('/UNION ALL $/', ') AS `posts_all`', $query);
 			$query = query($query) or error(db_error());
-			$res = $query->fetch();
-			$stats['active_content'] = $res['count'];
+			$stats['active_content'] = $query->fetchColumn();
 			
 			return Element('themes/recent/recent.html', Array(
 				'settings' => $settings,
diff --git a/templates/themes/rrdtool/theme.php b/templates/themes/rrdtool/theme.php
index 68fc1850..0e0a2f15 100644
--- a/templates/themes/rrdtool/theme.php
+++ b/templates/themes/rrdtool/theme.php
@@ -61,9 +61,8 @@
 					// debug just the graphing (not updating) with the --debug switch
 					if (!isset($argv[1]) || $argv[1] != '--debug') {
 						// Update graph
-						$query = query(sprintf("SELECT MAX(`id`) AS `count` FROM `posts_%s`", $board));
-						$count = $query->fetch();
-						$count = $count['count'];
+						$query = query(sprintf("SELECT MAX(`id`) FROM `posts_%s`", $board));
+						$count = $query->fetchColumn();
 					
 						if (!rrd_update($file, Array(
 							'-t',