Duda con php sqlite3

Hola a todos estoy siguiendo un curso de php que me gusta bastante la verdad pero tengo un problema, que como estoy aprendiendo hay cosas que no llego a entender o comprender.

El curso usa el antiguo sqlite y yo en xaamp tengo el sqlite:3, que creo que es el nuevo, y ahí es donde viene el fallo para poder seguir el curso correctamente.Ya he leido el manual de php pero no me aclara mucho la verdad.

Mi duda viene en SQLite3:query y SQLite:fetch_array ya que me da un error en esas linea y no veo o encuentro mi error, supongo que de sintaxis por lo que marca.

Paso a poner el codigo que uso y los errores que me da:
Código en pastebin

<?php

session_start();
echo "Tu usuario es: ".$_SESSION['usuario']."</br> Tu contrase&ntildea es: ".$_SESSION['contrasena'];

//Crear conexion
$conexion = new SQLite3('favoritos.db');
//Establecer una consulta
$consulta = "SELECT * FROM favoritos WHERE usuario ='xx' AND contrasena ='xx';";
//Ejecutar una consulta
$resultado = $conexion->query('$consulta');
//Imprimir la consulta
while($fila = $resultado->fetchArray('')){
   echo $fila['titulo'].$fila['direccion'].$fila['categoria'].$fila['comentario'].$fila['direccion'].$fila['valoracion'];
}
//Cerramos la consulta
$conexion->close();
?>


Errores:
Warning: SQLite3::query(): Unable to prepare statement: 1, near "$consulta": syntax error in C:\xampp\htdocs\favoritos\principal.php on line 11

Fatal error: Call to a member function fetchArray() on a non-object in C:\xampp\htdocs\favoritos\principal.php on line 13


Se que por aquí hay muchos entendidos a ver si alguno me puede echar una mano. Gracias

Y disculpar si no va aquí el hilo. Salu2
Wolas!

Así a primera vista y rápido diría que en la línea:

while($fila = $resultado->fetchArray('')){


le sobra la cadena vacía al fetchArray ¿no?, o le pones un modo o le dejas el que pone por defecto, pero con una cadena en blanco no se como se tendría que comportar...

while($fila = $resultado->fetchArray()){


Prueba a ver si es eso...
Me parece que el error está al crear la conexión. Le has pasado bien la ruta de la base de datos? Comprueba el "valor" del objeto $conexion
ovocaman escribió:Wolas!

Así a primera vista y rápido diría que en la línea:

while($fila = $resultado->fetchArray('')){


le sobra la cadena vacía al fetchArray ¿no?, o le pones un modo o le dejas el que pone por defecto, pero con una cadena en blanco no se como se tendría que comportar...

while($fila = $resultado->fetchArray()){


Prueba a ver si es eso...


Sumado a (otro vistazo rápido)
$resultado = $conexion->query('$consulta');

Ahí le estás poniendo a la query una cadena que contiene "$consulta".
Si quieres pasarle como parámetro el contenido de consulta, hazlo sin comillas:
$resultado = $conexion->query($consulta);
Esa es otra, pero tampoco es exactamente así. Si pusiera comillas dobles en vez de comillas simples le funcionaría xD
Lo de las comillas...

Las comillas simples impiden que las variables que haya en su interior sean interpretadas. El string resultante de ella es literalmente lo que has escrito dentro.

Las comillas dobles si permiten la interpretacion de las variables que haya en su interior. En este caso, tanto $variable como "$variable" darian el mismo string como resultado.

'$consulta' devuelve '$consulta'
"$consulta" devuelve "SELECT * FROM favoritos WHERE usuario ='xx' AND contrasena ='xx';"
$consulta devuelve "SELECT * FROM favoritos WHERE usuario ='xx' AND contrasena ='xx';"
Peklet escribió:Esa es otra, pero tampoco es exactamente así. Si pusiera comillas dobles en vez de comillas simples le funcionaría xD

Por eso siempre que es variable lo uso sin comillas (ni simples ni dobles).

arriba lo he puesto como "$consulta" por costumbre de C++ XD

Pero en php, nunca lo pongo como "$consulta" aunque lo interprete, porque el lío es mayor.
Gracias a los 3 en principio he corregido eses fallos y leyendo un poco mas creo que la conexión como bien decían por ahí estaba mal creada así como el cierre de conexión.

Para crear la conexión se debe hacer por lo que leí con PDO(sqlite:xxx)
Y para cerrarla con $conexion= null

Me sigue fallando, pero he corregido un error por lo menos, Gracias a los 3.

Pastebin corregido

Error que queda:
Fatal error: Call to a member function fetchArray() on a non-object in C:\xampp\htdocs\favoritos\principal.php on line 13
7 respuestas