Foros del Web » Programando para Internet » PHP »

como realizar consulta a mysql

Estas en el tema de como realizar consulta a mysql en el foro de PHP en Foros del Web. Saludos: Quiero hacer una consulta a una base de datos mysql. Aclaro que probé con distintas conexiones en localhost, pero la única que me resulto ...
  #1 (permalink)  
Antiguo 24/08/2016, 22:00
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
como realizar consulta a mysql

Saludos:

Quiero hacer una consulta a una base de datos mysql. Aclaro que probé con distintas conexiones en localhost, pero la única que me resulto en el host que arriendo fue con MYSQLI.

La idea es un formulario de ingreso con nombre y password que llama a un archivo php para comprobar el ingreso y crear una variable de sesion para el usuario. El archivo PHP se carga en un iframe en el mismo formulario.

Logré que me resulte, pero si ven el código, se darán cuenta que no es nada óptimo.

Código:
<?php
    $usuario = $_POST['user'];
    $clave = $_POST['pasw'];
	include "conexion.php";
	$conectado->query("SET NAMES 'utf8'");
	$query="select count(ID) 'cuenta' from usuario where ID='". $usuario . "' and password='" . $clave . "'";
	echo $query . "<br>";
	$InstruccionBD = $conectado->prepare ($query);
	$InstruccionBD->execute();
	$InstruccionBD->bind_result($cuenta);
	$InstruccionBD->fetch();
	$conectado->close();
	
    if ($cuenta==0){
?>
<html>
	<head>
		<script>
			window.parent.aviso();
        </script>
	</head>        
</html>
<?php    
    }
    else{

	include "conexion.php";

//	$conectado->query("SET NAMES 'utf8'");
	$query="select Nombre from usuario where ID='". $usuario . "' and password='" . $clave . "'";
	echo $query . "<br>";
	$InstruccionBD2 = $conectado->prepare ($query);
	$InstruccionBD2->store_result();
	$InstruccionBD2->execute();
	$InstruccionBD2->bind_result($nombre);
	$InstruccionBD2->fetch();

	$conectado->close();
		
		session_start();
		$_SESSION['usuario'] = $usuario;
		$_SESSION['nombre'] = $nombre;

        echo "<br>-".$nombre;
?>
<html>
	<head>
		<script>
			window.parent.cambia("setting.php");
        </script>
	</head>        
    <body>

    </body>
</html>
<?php
	}
?>

Y la pregunta es: ¿como debería escribirse correctamente este código?

de antemano, muchas gracias

  #2 (permalink)  
Antiguo 26/08/2016, 08:14
Avatar de elporfirio  
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 11 años
Puntos: 4
Respuesta: como realizar consulta a mysql

Pues habría muchas que cambiar, como sanitizar los valores antes de pasarlos a la query.

O no escribir codigo javascript que dependa del PHP

En fin, mira todos tenemos distintos niveles de habilidad, experiencia y abstracción. Asi que mi recomendación es "Amenos que tengas una pregunta concreta, no hagas preguntas - TAAN - generales"

Esto por que se presta a la interpretación de cada uno. Y la mejor frase de administración.

"Si ya funciona, mejor ni le muevas"
__________________
visita http://elporfirio.com o habrá tabla ¬¬
  #3 (permalink)  
Antiguo 26/08/2016, 09:20
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: como realizar consulta a mysql

Lo mejor que puedes hacer es guiarte por el manual prepare.

Siguiendo tu codigo:
Código PHP:
/* ... */
        
$query="select Nombre from usuario where ID= ? and password= ? "// aquí no pasamos los valores
    
echo $query "<br>";
    
$InstruccionBD2 $conectado->prepare ($query);
    
$InstruccionBD2->store_result();
    
$InstruccionBD2->execute( array($usuario$clave) ); // Aquí pasamos los parámetros 
/* ... */ 
__________________
Unset($vida['malRollo']);
  #4 (permalink)  
Antiguo 28/08/2016, 11:38
 
Fecha de Ingreso: enero-2009
Mensajes: 4
Antigüedad: 15 años, 10 meses
Puntos: 0
Respuesta: como realizar consulta a mysql

Elporfiao: Estoy empezando en php y nada de malo tiene el querer aprender. Disculpame por hacer consultas 'tan generales'. Se que el código, aunque funciona, a mi parecer no está bien, ya que estoy llamando más de una vez la conexión para hacer dos consultas, Esto es tan notorio, como el que no miraste el código.

Xerif and Tomas: Ese método con parámetros no lo conocía, y no me he topado con algo así en la red. El manual está bien, pero responder una pregunta con un link a un manual, es como responder una pregunta con otra pregunta.

En fin, quisiera saber como hacer más de una consulta, sin llamar a la conexion más de una vez.
  #5 (permalink)  
Antiguo 28/08/2016, 12:25
 
Fecha de Ingreso: octubre-2010
Ubicación: España
Mensajes: 1.007
Antigüedad: 14 años, 1 mes
Puntos: 123
Respuesta: como realizar consulta a mysql

Esa forma con parámetros es la misma que aparece en el Link del manual que te pase.
Código PHP:
<?php
/* Ejecuta una sentencia preparada pasando un array de valores */
$sth $dbh->prepare('SELECT name, colour, calories
    FROM fruit
    WHERE calories < ? AND colour = ?'
);
$sth->execute(array(150'red'));
$red $sth->fetchAll();
$sth->execute(array(175'yellow'));
$yellow $sth->fetchAll();
?>
Simplemente no cierres la conexión mientras necesites hacer consultas, cierra la una vez que acabes de hacer las peticiones a la base de datos. Y siendo la misma consulta pero con diferentes valores, sólo tienes que ejecutarla pasando lus nuevos valores.

Si vas a hacer una consulta preparada, no tiene ningún sentido que en la preparación establezcas los valores, ya que se pierde toda la exención de las consultas preparadas. Aquí tienes info al respecto

El manual de PHP es muy completo y con muchos ejemplos prácticos y sinceramente estando en castellano que mejor fuente que la oficial?

Cuando tengas dudas alguna función del lenguaje, lo mejor es leer el manual, para hacerte una idea de como funciona. php.net no sólo tiene documentación del lenguaje, consta con mucha información adicional.

Por ejemplo

Manual de PDO contacto con varios apartados explicando el funcionamiento.
__________________
Unset($vida['malRollo']);

Etiquetas: ingreso, logeo, mysql, mysqli
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 08:45.