Después de hacer pruebas como loco, encontré el problema.
Object_query es un método que tengo en la clase Connect.
Al utilizar en ese método $this->result se quedaba almacenado el array anterior y por eso unía ambos arrays que no tenían nada que ver.
Pero eso no tendría que suceder, puesto que estoy trabajando la clase con patrón singleton.
Dejo la clase y cómo la instancia para que alguien pueda decirme qué está sucediendo, ya que en teoría eso en el futuro me podría dar más errores por agotar la conexiones a la BD :S
Código PHP:
Ver original/*
* CLASE PARA CONECTAR Y REALIZAR OPERACIONES EN LA BASE DE DATOS
*/
class Connect{
private $IDConexion;
private $Escapestr;
private $IDQuery;
//para trabajar la clase con patron de diseño singleton
private static $instance;
private function __construct(){
//establezco los datos de autenticación para acceder a la base de datos
$conexion = mysqli_connect("server", "user" , "password" , "database");
//establezco el conjunto de caracteres a nivel de servidor en tiempo de ejecucion
$this->IDQuery = $conexion;
return $this->IDQuery;
}
//para trabajar la clase con patron de diseño singleton
public static function Instance(){
if(self::$instance == NULL){
self::$instance = new Connect();
}
return self::$instance;
}
public function Escape( $string_escapar ){
//escapo caracteres para evitar sql injection
$string_escapar = trim( $string_escapar );
$this->Escapestr = $escape;
return $this->Escapestr;
}
public function Connect ( $string_consulta ){
//comprueba si se ha creado la conexion
if(!$this->IDQuery)
{
}
//conecta a la base de datos
return $this->IDConsulta;
}
public function Go_out (){
}
/*
* procesa el resultset de la consulta
* (devuelve un array indexado)
*/
public function Object_query($conexion){
$result[] = $value;
}
}
else{
$result = FALSE;
}
return $result;
}
}
El método que recoge todas las subcategorias instancia así la clase connect
Código PHP:
Ver original/*
* obtiene todas las subcategories
*/
public function read_subcategories(){
$this->sql = "SELECT * FROM subcategories";
$this->conexion = Connect::Instance()->connect($this->sql);
$this->result = Connect::Instance()->Object_query($this->conexion);
return $this->result;
}
y así el método que recoge un post determinado
Código PHP:
Ver original/*
* selecciona un post por su id
*/
public function read_post($idpost){
$this->idpost = Connect::Instance()->Escape($idpost);
$this->sql = "SELECT * FROM posts WHERE idpost= $this->idpost";
$this->conexion = Connect::Instance()->connect($this->sql);
$this->result = Connect::Instance()->Object_query($this->conexion);
return $this->result;
}