PHP - Variables PHP en sentencia SQL

   
Vista:
Imágen de perfil de Iñaki

Variables PHP en sentencia SQL

Publicado por Iñaki (14 intervenciones) el 04/08/2017 13:34:34
Buenas,

Tengo es siguiente código con una select (En la linea 11) que si en vez de variables pongo valores concretos me funciona perfecto, pero con variables ($postActual y $idUsuario) en php no me funciona.
¿Qué hago mal? ¿Comillas, puntos, doble comillas....xD?

Un saludo y gracias de antemano. ; )

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<?php
session_start();
include ('conexion.php');
//Tomamos los dos valores:
$postActual = $_REQUEST['idPost'];
$idUsuario = $_SESSION['id_usuario'];
//Dos echos para ver si tienen valores correctos
echo $postActual;
echo $idUsuario;
//Comprobación si usuario ya ha dado me gusta a este post//
$sql2 = "SELECT * FROM meGustasPost WHERE idPost=.$postActual. AND idUsuario=.$idUsuario.";
 //AND idUsuario = ".$idUsuario."";
$result = $conn->query($sql2);
 
if ($result->num_rows > 0)
	{
 
	echo "Ya votó este usuario";
    // output data of each row  
	}
	else
	{
	    echo "No votó este usuario";
	    //Sumar me gustas
	    $sql=mysqli_query($conn,"UPDATE postUsuarios SET meGustasPost = meGustasPost + 1 WHERE idPost = '$postActual'");
	    //Registrar en la tabla meGustasPost el me gusta para no poder repetir la botación por el mismo usuario.
		$sql = "INSERT INTO meGustasPost (idPost,idUsuario)
		VALUES ('$postActual','$idUsuario')";
 
 
		if ($conn->query($sql) === TRUE) {
		    echo "Nuevos registro de usuario creado";
		} else {
		    echo "Error: " . $sql . "<br>" . $conn->error;
		}
	}
$conn->close();
?>
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de facundo

Variables PHP en sentencia SQL

Publicado por facundo (185 intervenciones) el 04/08/2017 17:02:43
Hola!, mira, lo que te falta son las comillas y el punto no va.. seria asi:

1
$sql2 = "SELECT * FROM meGustasPost WHERE idPost='$postActual' AND idUsuario='$idUsuario'";

o si no queres lidiar con las comillas podes hacerlo de la siguiente manera:

1
2
3
4
5
6
7
$sql = <<<consulta_sql
SELECT * FROM meGustasPost
WHERE idPost=$postActual
AND idUsuario=$idUsuario
consulta_sql;
 
.

Esta ultima fijate que en la ultima linea hay un espacio en blanco, siempre debe haberlo de lo contrario no te funciona.. Modificado: puse un punto en la linea 7 para que se vea el espacio de la linea 6
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
Imágen de perfil de Iñaki

Variables PHP en sentencia SQL

Publicado por Iñaki (14 intervenciones) el 04/08/2017 22:03:59
Muchas gracias facundo, pero...me sigue sin funcionar.
Lo que tengo es un sistema de Me gusta en una red social que estoy creando (a modo de ejercicio)
Como puedes ver, lo que hace es la primera vez que se da a me gusta se registra, y las siguientes veces mediante la select, como debería decir que hay resultados en la select de $postActual y $idUsuario, ya ese usuario no podría votar y pasaría al ELSE...

¿Está bien lo de num rows? La select si está bien, almenos cuando lo pruebo en phpMyadmin, da los resultados correctos, claro que en phpMyadmin no puedo probar con variables php, sino con números diréctamente....

El código del sistema registrar Me Gusta es el siguiente...

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
<?php
session_start();
include ('conexion.php');
 
$postActual = $_REQUEST['idPost'];
$idUsuario = $_SESSION['id_usuario'];
//Dos echos para ver si tienen valores correctos
echo $postActual;
echo $idUsuario;
//Comprobación si usuario ya ha dado me gusta a este post//
$total = mysql_num_rows(mysql_query("SELECT * FROM meGustasPost WHERE idPost='$postActual' AND idUsuario='$idUsuario;'"));
 //AND idUsuario = ".$idUsuario."";
echo $total;
 
	if ((mysql_num_rows($total)) > 0)
		{
		echo "Ya votó este usuario";
	    // output data of each row  
		}
	else
		{
	    echo "No votó este usuario";
	    //Sumar me gustas
	    $sql=mysqli_query($conn,"UPDATE postUsuarios SET meGustasPost = meGustasPost + 1 WHERE idPost = '$postActual'");
	    //Registrar en la tabla meGustasPost el me gusta para no poder repetir la botación por el mismo usuario.
		$sql = "INSERT INTO meGustasPost (idPost,idUsuario)
		VALUES ('$postActual','$idUsuario')";
 
		if ($conn->query($sql) === TRUE) {
		    echo "Registro de Me Gusta Post creado";
		} else {
		    echo "Error: " . $sql . "<br>" . $conn->error;
		}
	}
$conn->close();
?>


¡Gracias!
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de facundo

Variables PHP en sentencia SQL

Publicado por facundo (185 intervenciones) el 05/08/2017 20:17:12
mm nose tendria que ir probando todo el codigo, fijate de hacer un var_dump de los query, y esa consulta pegala en phpmyadmin la seccion para hacer consultas, si no te andan en el phpmyadmin es porque hay algo mal en la consulta
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar