diff --git a/phpBB/phpbb/db/migration/schema_generator.php b/phpBB/phpbb/db/migration/schema_generator.php
index f36e6a96d5..18c99fb94a 100644
--- a/phpBB/phpbb/db/migration/schema_generator.php
+++ b/phpBB/phpbb/db/migration/schema_generator.php
@@ -112,8 +112,8 @@ class schema_generator
 										$columns = $this->tables[$table]['COLUMNS'];
 										$offset = array_search($column_data['after'], array_keys($columns));
 										unset($column_data['after']);
-										
-										if ($offset == false)
+
+										if ($offset === false)
 										{
 											$this->tables[$table]['COLUMNS'][$column] = array_values($column_data);
 										}
diff --git a/tests/dbal/migration/dummy_order.php b/tests/dbal/migration/dummy_order.php
index 011ac7c1e9..af047eb416 100644
--- a/tests/dbal/migration/dummy_order.php
+++ b/tests/dbal/migration/dummy_order.php
@@ -13,7 +13,7 @@ class phpbb_dbal_migration_dummy_order extends \phpbb\db\migration\migration
 	{
 		return array(
 			'add_tables'	=> array(
-				$this->table_prefix . 'column_order_test'	=> array(
+				$this->table_prefix . 'column_order_test1'	=> array(
 					'COLUMNS'			=> array(
 						'foobar1'			=> array('BOOL', 0),
 						'foobar3'			=> array('BOOL', 0),
@@ -22,10 +22,55 @@ class phpbb_dbal_migration_dummy_order extends \phpbb\db\migration\migration
 				),
 			),
 			'add_columns'	=> array(
-				$this->table_prefix . 'column_order_test'	=> array(
+				$this->table_prefix . 'column_order_test1'	=> array(
 					'foobar2'	=> array('BOOL', 0, 'after' => 'foobar1'),
 				),
 			),
+
+			'add_tables'	=> array(
+				$this->table_prefix . 'column_order_test2'	=> array(
+					'COLUMNS'			=> array(
+						'foobar1'			=> array('BOOL', 0),
+						'foobar3'			=> array('BOOL', 0),
+					),
+					'PRIMARY_KEY'		=> array('foobar1'),
+				),
+			),
+			'add_columns'	=> array(
+				$this->table_prefix . 'column_order_test2'	=> array(
+					'foobar4'	=> array('BOOL', 0, 'after' => 'foobar3'),
+				),
+			),
+
+			'add_tables'	=> array(
+				$this->table_prefix . 'column_order_test3'	=> array(
+					'COLUMNS'			=> array(
+						'foobar1'			=> array('BOOL', 0),
+						'foobar3'			=> array('BOOL', 0),
+					),
+					'PRIMARY_KEY'		=> array('foobar1'),
+				),
+			),
+			'add_columns'	=> array(
+				$this->table_prefix . 'column_order_test3'	=> array(
+					'foobar5'	=> array('BOOL', 0, 'after' => 'non-existing'),
+				),
+			),
+
+			'add_tables'	=> array(
+				$this->table_prefix . 'column_order_test4'	=> array(
+					'COLUMNS'			=> array(
+						'foobar1'			=> array('BOOL', 0),
+						'foobar3'			=> array('BOOL', 0),
+					),
+					'PRIMARY_KEY'		=> array('foobar1'),
+				),
+			),
+			'add_columns'	=> array(
+				$this->table_prefix . 'column_order_test4'	=> array(
+					'foobar5'	=> array('BOOL', 0, 'after' => ''),
+				),
+			),
 		);
 	}
 }
diff --git a/tests/migrator/schema_generator_test.php b/tests/migrator/schema_generator_test.php
index 4de6064895..c87c4cb904 100644
--- a/tests/migrator/schema_generator_test.php
+++ b/tests/migrator/schema_generator_test.php
@@ -49,18 +49,75 @@ class schmema_generator_test extends phpbb_test_case
 		$this->assertArrayHasKey('phpbb_users', $this->generator->get_schema());
 	}
 
-	public function test_check_column_position_success()
+	protected $expected_results_between = array(
+		'foobar1' => array('BOOL', 0),
+		'foobar2' => array('BOOL', 0),
+		'foobar3' => array('BOOL', 0),
+	);
+
+	public function test_check_column_position_between_success()
 	{
 		$this->get_schema_generator(array(
 			'phpbb_dbal_migration_dummy_order',
 		));
 
 		$tables = $this->generator->get_schema();
-		$columns = $tables[$this->table_prefix . 'column_order_test']['COLUMNS'];
+		$columns = $tables[$this->table_prefix . 'column_order_test1']['COLUMNS'];
 
-		$offset1 = array_search('foobar1', array_keys($columns));
-		$offset2 = array_search('foobar2', array_keys($columns));
+		$this->assertEquals($columns, $expected_results_between, 'The schema generator could not position the column correctly between column 1 and 3, using the "after" option in the migration script.');
+	}
 
-		$this->assertEquals($offset1 + 1, $offset2, 'The schema generator could not position the column correctly, using the "after" option in the migration script.');
+	protected $expected_results_after_last = array(
+		'foobar1' => array('BOOL', 0),
+		'foobar3' => array('BOOL', 0),
+		'foobar4' => array('BOOL', 0),
+	);
+
+	public function test_check_column_position_after_last_success()
+	{
+		$this->get_schema_generator(array(
+			'phpbb_dbal_migration_dummy_order',
+		));
+
+		$tables = $this->generator->get_schema();
+		$columns = $tables[$this->table_prefix . 'column_order_test2']['COLUMNS'];
+
+		$this->assertEquals($columns, $expected_results_after_last, 'The schema generator could not position the column correctly after the last column, using the "after" option in the migration script.');
+	}
+
+	protected $expected_results_after_missing = array(
+		'foobar1' => array('BOOL', 0),
+		'foobar3' => array('BOOL', 0),
+		'foobar5' => array('BOOL', 0),
+	);
+
+	public function test_check_column_position_after_missing_success()
+	{
+		$this->get_schema_generator(array(
+			'phpbb_dbal_migration_dummy_order',
+		));
+
+		$tables = $this->generator->get_schema();
+		$columns = $tables[$this->table_prefix . 'column_order_test3']['COLUMNS'];
+
+		$this->assertEquals($columns, $expected_results_after_missing, 'The schema generator could not position the column after a "missing" column value, using the "after" option in the migration script.');
+	}
+
+	protected $expected_results_after_empty = array(
+		'foobar1' => array('BOOL', 0),
+		'foobar3' => array('BOOL', 0),
+		'foobar5' => array('BOOL', 0),
+	);
+
+	public function test_check_column_position_after_empty_success()
+	{
+		$this->get_schema_generator(array(
+			'phpbb_dbal_migration_dummy_order',
+		));
+
+		$tables = $this->generator->get_schema();
+		$columns = $tables[$this->table_prefix . 'column_order_test4']['COLUMNS'];
+
+		$this->assertEquals($columns, $expected_results_after_empty, 'The schema generator could not position the column after an "empty" column value, using the "after" option in the migration script.');
 	}
 }