Interaccion PHP MySQL
Interaccion PHP MySQL
La validacin de datos ingresados por un usuario en un formulario es una necesidad en las aplicaciones web, tanto por razones tcnicas, como por aspectos de seguridad. Cuando se envan datos de un formulario errneos al servidor web, este invierte algn tiempo en procesar los datos, y si estos contienen errores o no estn en el formato deseado, invertir algn tiempo en procesarlos y en determinar si se pueden utilizar esos datos.
ns desplegables y cuadros de lista resulta ms fcil porque el valor siempre ser uno de una lista de valores predefinidos. Si se establece desde la creacin del formulario un valor preestablecido, la validacin no ser necesaria.
2.
3.
4. 5. 6. 7. 8.
Debe considerar que el intrprete de PHP no hace ningn anlisis de la sintaxis MySQL con que se construy la consulta. Para PHP, se trata nicamente de una cadena de caracteres. Ser el programador el encargado de revisar su validez como sentencia SQL.
Y el mtodo de envo empleado ha sido POST, el cdigo PHP para tomar este valor, sera:
<?php echo $_POST['nombre']; ?>
Cuando el mtodo de envo sea GET, los datos sern enviados en la cadena de consulta que forma parte de la URL que es enviada al servidor. En cambio, cuando se usa el mtodo POST los datos son incorporados en el cuerpo del mensaje HTTP que es enviado desde el navegador al servidor.
Siendo: Servidor: Es el nombre (o la direccin IP) del servidor donde est MySQL. El valor por defecto ser 'localhost'. Usuario: Es el nombre del usuario que va a acceder a MySQL Clave: Es la clave correspondiente al usuario. Esta funcin nos devuelve un valor de tipo int que sirve para identificar la conexin con el servidor SQL, as que podremos asignarlo a una variable con la que referirnos a la conexin abierta.
Por ejemplo, si queremos eliminar la base de datos que acabamos de crear, haramos:
<?php mysql_drop_db($NombreBD, $IdConexion); ?>
Ser til tener los datos en variables (las posteriores modificaciones son as ms sencillas), por ejemplo, en las siguientes lneas guardamos el nombre del servidor, usuario y clave en variables, y abrimos la conexin:
<?php $Servidor = "localhost"; $Usuario = "admin"; $Clave = "pass4321"; $IdConexion = mysql_connect($Servidor, $Usuario, $Clave); ?>
donde $NombreBD e $IdConexion son las variables que tenamos definidas antes, una con el nombre de la base de datos y otra con el identificador de la conexin.
Adems, esto podemos grabarlo en un archivo, por ejemplo, ConexionBD.php, y en lugar de escribir lo anterior, poner:
<?php include("ConexionBD.php"); ?>
Por ejemplo, si queremos abrir una base de datos cuyo nombre sea "Usuarios", haremos lo siguiente:
<?php $NombreBD = "Usuarios"; mysql_select_db($NombreBD, $IdConexion); ?>
As podremos usar este pequeo script de conexin al servidor de bases de datos en los scripts que lo requieran. Una vez abierta la conexin, tenemos las siguientes opciones: Crear una nueva base de datos Borrar una base de datos existente Abrir una base de datos existente
NombreBD ser el nombre que queramos darle a la base de datos IdConexion es el identificador de la conexin abierta Por ejemplo, teniendo abierta una conexin, cuyo identificador hemos guardado en la variable $IdConexion, para crear una base de datos cuyo nombre sea "PruebaBD", haremos:
<?php $NombreBD = "PruebaBD"; mysql_create_db($NombreBD, $IdConexion); ?>
Como se aprecia en la definicin, hemos de pasarle como parmetro obligatorio una cadena en la que debe estar almacenada la consulta a realizar y, como parmetro opcional, el identificador de la conexin abierta (si no se especifica, se toma el que est activo en ese momento). Adems, devuelve un identificador de consulta, que podemos almacenar en una variable para referirnos luego a dicha consulta. Lo que hacemos con esta funcin es enviar la sentencia SQL al servidor MySQL para que sta sea ejecutada. Una vez hecha la consulta, hay que saber cmo recuperar los datos; esto es lo que hacemos en las siguientes lneas:
$ResultQuery = mysql_fetch_array($IdConsulta); print("Usuario: ".$ResultQuery["USUARIO"]."<B>"); print("E-mail: ".$ResultQuery[1]."<P>");
Tenemos varias funciones para recuperar los datos de una consulta. Una de ellas es, como vemos en el ejemplo, mysql_fetch_array();. Esta funcin devuelve en un array el contenido de la sentencia SELECT, identificando cada elemento con un campo de la base de datos y avanzando a la siguiente fila. Para ello, debe-
mos pasarle el identificador de consulta devuelto por mysql_query();. Observamos, adems, que como ndice podemos especificar tanto su posicin numrica (los arrays van del 0 al N-1, donde N es el nmero de elementos) como, entre comillas, el nombre del campo. Si queremos recorrer todas las filas devueltas por el SELECT, tendremos que ir haciendo la asignacin fila a fila hasta que ya no queden filas. Para saber cuntas filas devuelve un SELECT, tenemos la funcin mysql_num_rows();. Esta funcin, cuya definicin vemos:
mysql_num_rows(int IdConsulta);
letra
i.
As:
Es recomendable comprobar el resultado del intento de conexin con la base de datos para evitar errores al intentar ejecutar consultas con la base de datos. Puede utilizar cualquier mtodo que estime conveniente para este propsito. A continuacin se le presenta una de tantas formas para poder realizar esta comprobacin:
if(mysqli_connect_errno()){ printf("Fall la conexin: %s\n", mysqli_connect_error()); exit(0); } //Ac el cdigo a ejecutar si la conexin se realiz de forma exitosa
Devuelve un entero, que ser el nmero de filas del SELECT, de la consulta correspondiente al identificador IdConsulta. Al igual que tenemos mysql_fetch_array();, hay una funcin que se llama mysql_fetch_row();. Hace lo mismo, pero con una salvedad, y es que no se puede usar el nombre del campo en el array que devuelve como si fuera una manera de indexar. Es decir, slo admite referencias numricas a los campos de la consulta. Hay que tener en cuenta que el primero es el 0.
En la prctica casi siempre se ver obligado a concatenar sentencias SQL con variables de PHP. Estas variables muy probablemente sern establecidas por el ingreso de informacin de parte del usuario a travs de formularios. El siguiente paso es enviar la consulta al servidor MySQL para que sea ejecutada. Para ello se requiere una instruccin como la siguiente. Se muestra siempre la instruccin orientada a objeto y la basada en procedimientos:
$rs = mysqli_query($cn, $db);
En la instuccin anterior se ha utilizado el operador de supresin de errores, @, para evitar que se muestren los errores reportados por PHP y que usted pueda implementar formas ms elegantes para presentar los errores al usuario. La funcin mysqli_connect() devuelve un puntero en lugar de un objeto. Adems, puede utilizar las funciones que la biblioteca mysqli proporciona, recordando que en este caso dichas funciones conservan la misma sintaxis que proporcionaba la biblioteca mysql_connect, mysql_query, etc. Con la salvedad que
Se pueden liberar los conjuntos de resultados mediante el llamado al mtodo $rs->free() o con mysqli_free_result(), si utiliza el enfoque basado en procedimientos. Despus de esto es conveniente cerrar la conexin con la base de datos. Para ello puede utilizar:
mysqli_close($cn);
La funcin mysqli_num_rows() indica el nmero de filas devueltas por la consulta. La utilidad de obtener el nmero de filas devuelto est en que al hacerlo facilita el procesamiento de los resultados mediante cualquiera de las formas de lazos o bucles de PHP. Por ejemplo, de la siguiente forma:
for($i=0; $i<$nr; $i++){ //Procesamiento del resultado }
En cada iteracin adentro del ciclo o lazo se puede utilizar una funcin como $rs->fetch_assoc() (o mysqli_fetch_assoc() si est utilizando el enfoque por procedimientos). El bucle no se ejecutar si el conjunto de resultados est vaco. La funcin mysqli_fetch_assoc() obtiene cada fila del conjunto de resultados y devuelve la fila actual en forma de matriz asociativa, con cada clave en forma de nombre de atributo y cada valor con su valor correspondiente en la matriz. Para procesar cada fila del conjunto de resultados se puede utilizar una variable que contendr los elementos de la matriz devuelta en cada iteracin, de la siguiente forma:
mysqli_fetch_assoc($rs);
Una vez obtenida una fila mediante alguna de las instrucciones anteriores, ser posible obtener cada campo para mostrarlos adecuadamente en una tabla o lista. De la siguiente forma:
while($row = while($row = mysqli_fetch_assoc()) echo stripslashes($row['autor']); }
Se ha utilizado la funcin stripslashes para quitar las comillas que se han escapado para evitar problemas con las consultas MySQL. Desconectarse de la base de datos