Query works in PHPMyAdmin but not in the PHP script

1

The query:

SELECT
'morel_asigntura'.'asignatura',
'morel_asignaturas_ei'.'nombre_ei',
'morel_asignaturas_ei'.'activo_ei',
(CASE 
WHEN 'morel_asignaturas_ei'.'activo_ei' =0
THEN "0"
WHEN 'morel_asignaturas_ei'.'activo_ei' =1
THEN "1"
ELSE "2"
END) as valor,
'morel_jefatura'.'departamento',
'morel_jefatura'.'activo_jefatura'
FROM 'morel_jefatura_materia'
LEFT JOIN 'morel_asigntura'
ON 'morel_asigntura'.'id' = 'morel_jefatura_materia'.'id_asignatura'
LEFT JOIN 'morel_asignaturas_ei'
ON 'morel_asignaturas_ei'.'id_asignatura' = 'morel_asigntura'.'id'
LEFT JOIN 'morel_jefatura'
ON 'morel_jefatura'.'id' = 'morel_jefatura_materia'.'id_jefatura'
HAVING valor >0
AND 'morel_jefatura'.'activo_jefatura' = '1'
order by 'morel_jefatura'.'departamento'

It works when I do it in PHPMyAdmin but not in the script:

<html>
<head>
  <title>Jefatura Docente</title>
</head>
<body>
<h1>Jefatura Docente</h1>
<?php
@ $db =  mysqli_connect("127.0.0.1", "iunaorg_admin", "521002", "iunaorg_morel"); /*Conectamos a la base de datos usando
  la funcion mysql_pconnect(). Guardamos la conexion a la base de datos en una variable $db 
  Si queremos que un error de php no aparezca en pantalla le agregamos @ */

  if (!$db)
  {
     echo "Error: No se ha podido conectar a la base de datos.  Por favor, prueba de nuevo más tarde.";
  }
  else{echo "Te conectaste!!!!";
  }
$consulta = "
SELECT
'morel_asigntura'.'asignatura',
'morel_asignaturas_ei'.'nombre_ei',
'morel_asignaturas_ei'.'activo_ei',
(CASE 
WHEN 'morel_asignaturas_ei'.'activo_ei' =0
THEN "0"
WHEN 'morel_asignaturas_ei'.'activo_ei' =1
THEN "1"
ELSE "2"
END) as valor,
'morel_jefatura'.'departamento',
'morel_jefatura'.'activo_jefatura'
FROM 'morel_jefatura_materia'
LEFT JOIN 'morel_asigntura'
ON 'morel_asigntura'.'id' = 'morel_jefatura_materia'.'id_asignatura'
LEFT JOIN 'morel_asignaturas_ei'
ON 'morel_asignaturas_ei'.'id_asignatura' = 'morel_asigntura'.'id'
LEFT JOIN 'morel_jefatura'
ON 'morel_jefatura'.'id' = 'morel_jefatura_materia'.'id_jefatura'
HAVING valor >0
AND 'morel_jefatura'.'activo_jefatura' = '1'
order by 'morel_jefatura'.'departamento'
";
echo "verificacion!";
?>
</body>
</html>

Returns a blank sheet. The problem is in

(CASE 
WHEN 'morel_asignaturas_ei'.'activo_ei' =0
THEN "0"
WHEN 'morel_asignaturas_ei'.'activo_ei' =1
THEN "1"
ELSE "2"
END) as valor,

But I do not know how to solve it.

    
asked by alberto 12.06.2017 в 15:31
source

1 answer

3

We always have this type of error you are using double quotes within your sentence, you just have to replace them with single quotes

Within PHP take as the start of your statement from the opening of your double quote and close it where you find another one, that's why you query ended in the case , if we are going to use quotes dobes at the beginning it is recommended to put in single quotes , however it can be reversed with single quotes and inside double quotes

"
SELECT
'morel_asigntura'.'asignatura',
'morel_asignaturas_ei'.'nombre_ei',
'morel_asignaturas_ei'.'activo_ei',
(CASE 
WHEN 'morel_asignaturas_ei'.'activo_ei' =0
THEN '0'
WHEN 'morel_asignaturas_ei'.'activo_ei' =1
THEN '1'
ELSE '2'
END) as valor,
'morel_jefatura'.'departamento',
'morel_jefatura'.'activo_jefatura'
FROM 'morel_jefatura_materia'
LEFT JOIN 'morel_asigntura'
ON 'morel_asigntura'.'id' = 'morel_jefatura_materia'.'id_asignatura'
LEFT JOIN 'morel_asignaturas_ei'
ON 'morel_asignaturas_ei'.'id_asignatura' = 'morel_asigntura'.'id'
LEFT JOIN 'morel_jefatura'
ON 'morel_jefatura'.'id' = 'morel_jefatura_materia'.'id_jefatura'
HAVING valor >0
AND 'morel_jefatura'.'activo_jefatura' = '1'
order by 'morel_jefatura'.'departamento'
"
    
answered by 12.06.2017 в 15:40