No, hay caso, si pongo comillas simples el error es identico:
Cita: SELECT if(articulos.stock>0,'si','no') FROM articulos;)You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''si','no') FROM articulos' at line 1
en phpmyadmin anda bien de ambas formas, asi que no creo que sea un problema de la consulta en si, sino de cuando se prepara.
la clase que uso tiene estos 3 metodos y falla en _prepararSentencia()
la variable $sentencia que recibe el metodo rawQuery es la consulta con el if
Código PHP:
Ver originalprotected function rawQuery($sentencia, $bindParametros = NULL)
{
$this->_sentencia
= filter_var($sentencia, FILTER_SANITIZE_STRING
); $stmt = $this->_prepararSentencia();
{
$parametros = array(''); // Crea vacio el indice 0. foreach ($bindParametros as $campo => $valor)
{
$parametros[0] .= $this->_determinarTipo($valor);
$parametros[] = $valor;
}
}
$this->ejecutarSentencias($stmt);
return $this->_bindResultados($stmt);
}
protected function _prepararSentencia()
{
if (!$stmt = $this->_mysqli->prepare($this->_sentencia))
echo('Ocurrio un error preparando la sentencia ('.$this->_sentencia.') '.$this->_mysqli->error);
return $stmt;
}
private function ejecutarSentencias(mysqli_stmt &$stmt)
{
if(!$stmt->execute())
{
if($this->_explotar)
die('Ocurrio un error procesando los datos ('.$this->_mysqli
->errno.') '.$this->_mysqli
->error); else {
$this->_error = $this->_mysqli->error;
$this->_nroError = $this->_mysqli->errno;
}
}
}