Trabajo seguro con base de datos mysql. Soporte de bases de datos en PHP. Eliminar registros de la base de datos

Llamé a mi base de datos "phptest". Después de hacer clic en el botón "Crear", debería ser transferido automáticamente a la base de datos que creó.

Crear una tabla en la base de datos.

Tampoco hay nada complicado en este procedimiento. Creemos una tabla en la que almacenaremos el título de nuestros artículos y el texto en sí:

Como habrás notado, puse el número 3 en el número de campos, ¿por qué? Después de todo, necesitamos crear dos campos, uno para el título y otro para el texto. El punto es que una tabla en la base de datos debe tener un campo adicional.¿Para qué? Este campo representa la alternativa número de identificación, (es decir, parece que contamos nuestras filas en la tabla) de esta manera obtenemos cada fila de la tabla su propio número único. Esto será útil para encontrar la cadena que necesitamos en la base de datos. Este campo generalmente se llama id y se establece en él. AUTO_INCREMENT(Les mostraré a continuación dónde se exhibe). AUTO_INCREMENT le permite asignar a cada línea su propio número único, por lo que no encontrará un registro con el mismo número en la tabla de la base de datos.

Después de completar el nombre y la cantidad de campos, haga clic en "Aceptar" y accederá a la página de creación de campos. Les confieso que no entiendo muy bien lo que hago al crear campos, pero eso no me impide trabajar con ellos, rellenémoslo así:

Y complete los dos campos que necesitamos:

¿Por qué sólo dos? Porque el primer campo de identificación se completará automáticamente debido a AUTO_INCREMENT. Haga clic en "Aceptar". Ahora, en la pestaña "Descripción general", puede ver la línea que creamos en la tabla:

Bueno, hemos aprendido cómo crear tablas y filas a través del panel phpmyadmin, esto ya es un progreso. Por cierto, me gustaría señalar que la interfaz de este panel es intuitiva, puedes presionar fácilmente los botones allí y descubrir qué hay. qué

Es hora de aprender a crear, eliminar y actualizar filas en tablas creadas usando PHP. Para que puedas percibir mejor lo que te estoy contando, escribiremos un pequeño panel de administración para el sitio y, a medida que vayan las cosas, te diré qué y cómo.

Salida de registros de la base de datos

Comencemos con esto, ya que al crear cualquier proyecto es necesario ver claramente el proceso, y sin resultado es muy difícil hacerlo (trabajaré con el archivo test.php, no se sorprenda cuando vea enlaces en el código a este archivo). ¿Cómo nos retiraremos? Bueno, primero necesitamos conectarnos a la base de datos, después de usar el bucle do while (Aprendizaje PHP - Bucles) recuperaremos registros de la base de datos. Empecemos

  • Conexión a la base de datos

¿Cómo se hace la conexión? Atención a la sintaxis:

mysql_select_db(Nombre de la base de datos, mysql_connect(Servidor, nombre de usuario de la base de datos, contraseña de usuario de la base de datos));

El nombre de la base de datos, el usuario del servidor y la contraseña los crea usted o los proporciona su proveedor de alojamiento. Usando el ejemplo servidor local, usted mismo crea algunos datos o utiliza los ya creados. Así es como se verán las conexiones a la base de datos que creé:






//CONECTARSE A LA BASE DE DATOS (DB)

El servidor, usuario y contraseña fueron creados por defecto (en en este caso podemos decir que casi todos los datos nos los proporciona el hosting). De mis datos solo indiqué el nombre de la base de datos. Por cierto, esto codigo php, y por lo tanto debe estar entre paréntesis especiales ()

  • Salida de datos

Necesitamos mostrar datos de la tabla de páginas. Preste atención a la sintaxis de salida:

$resultado = mysql_query("SELECCIONAR lo que extraemos DEL nombre de la tabla en la base de datos");

La primera línea nos permite especificar qué columnas necesitamos extraer y de qué base de datos.

La segunda línea pone todo lo encontrado en una variable...

ATENCIÓN Hay un par de puntos que me gustaría aclarar. Resolvamos algunos problemas:

  • Necesitamos extraer todos los campos de la tabla.

¿Cómo extraer todos los campos de la tabla de páginas? como esto:

$resultado = mysql_query("SELECCIONAR * DE la página");
$mifila = mysql_fetch_array($resultado);

Quizás hayas notado que puse un asterisco (*) después de SELECT. El asterisco significa que necesito extraer todos los campos de la tabla

  • Necesitamos extraer solo un campo de la tabla.

¿Cómo extraer solo el campo de texto de una tabla? como esto:

$resultado = mysql_query("SELECCIONAR texto DE la página");
$mifila = mysql_fetch_array($resultado);

Para extraer no todos los campos, sino solo algunos, debe enumerar los campos obligatorios después de SELECCIONAR, separados por comas.

  • Necesitamos extraer campos no de toda la tabla, sino solo de una línea.

¿Cómo extraer todos los campos de la primera línea? Sabemos que la primera línea tiene una identificación. igual a uno, usemos este conocimiento:

Después de SELECCIONAR, expliqué, separados por comas, qué campos debían extraerse y luego agregué nueva linea DONDE (que significa "dónde") la identificación es igual a 1. Por lo tanto, saco los campos que necesito de la línea donde la identificación es igual a uno

Bueno, ¿comencemos a crear el resultado de nuestros artículos? Mostraremos solo los encabezados, comencemos:


$mifila = mysql_fetch_array($resultado);

hacer
{
echo "".$mifila."
";
}

¿Qué hemos hecho? Sacamos dos campos de la tabla, id y título. A continuación, lanzamos un bucle do while (Aprendizaje PHP - Ciclos) y creamos enlaces utilizando los datos que se extrajeron de la base de datos. Los datos se almacenan en la variable $myrow, esta variable es una matriz, las claves de la matriz son los nombres de nuestros campos en la base de datos. Esto es lo que pasó:

Los encabezados están impresos, ahora organicemos el resultado. mensajes completos cuando haces clic en un enlace con un título. Para hacer esto en un archivo, agregue condiciones if()():

//CONECTARSE A LA BASE DE DATOS (DB)
$nameDB = "phptest";//Nombre de la base de datos
$nombreSERVER = "localhost";//Servidor
$nameUSER = "root";//Nombre de usuario de la base de datos
$passUSER = "";//Contraseña de usuario de base de datos
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//CONECTARSE A LA BASE DE DATOS (DB)

//ENCABEZADOS DE SALIDA
si(!isset($_GET["id"]))
{
$resultado = mysql_query("SELECCIONAR id,título DE la página");
$mifila = mysql_fetch_array($resultado);

hacer
{
echo "".$mifila."
";
}
mientras ($myrow = mysql_fetch_array($resultado));
}
//ENCABEZADOS DE SALIDA

//SALIR TEXTO COMPLETO
si(isset($_GET["id"]))
{

$mifila = mysql_fetch_array($resultado);

echo $mifila;
}
//SALIR TEXTO COMPLETO
?>

Agregué dos condiciones. Veremos una lista con encabezados solo si la variable global $_GET["id"] no existe. Veremos el texto completo sólo si esta variable existe. En este caso, mostraremos solo un registro que necesitamos de la base de datos. Esto es lo que tenemos:

Ahora creo que es hora de aprender a agregar nuevas filas a la tabla.

Agregar datos a la base de datos

Comencemos a agregar creando un formulario, aquí hay un fragmento de código que debe agregarse al final de nuestro archivo:

//FORMULARIO AGREGAR ENTRADAS
si(isset($_GET["agregar"]))
{
eco "







";
}
//FORMULARIO AGREGAR ENTRADAS

Este formulario aparecerá sólo si existe la variable global $_GET["add"], por lo que en algún lugar de la parte inferior deberá insertar un enlace para agregar nuevo articulo. Esto se hace mejor en el código de salida del encabezado; también puede editar la condición para generar nuestros encabezados de esta manera:

//ENCABEZADOS DE SALIDA
if(!isset($_GET["id"]) Y !isset($_GET["add"]))
{
$resultado = mysql_query("SELECCIONAR id,título DE la página");
$mifila = mysql_fetch_array($resultado);

hacer
{
echo "".$mifila."
";
}
mientras ($myrow = mysql_fetch_array($resultado));

eco "


Agregar publicación";
}
//ENCABEZADOS DE SALIDA

Edité la condición para que la lista de encabezados no apareciera cuando se muestre el formulario, esto es lo que sucedió:

$resultado = mysql_query("INSERT INTO nombre de la tabla en la base de datos (campo 1 de la base de datos, campo 2 de la base de datos) VALORES ("datos 1", "datos 2")");

Ahora escribamos un controlador para nuestro mini panel de administración y comprenderá todo. Aquí hay un fragmento de código que publiqué justo después de conectarme a la base de datos:

//AGREGAR ENTRADAS

{

encabezado("ubicación: prueba.php");
salida;
}
//AGREGAR ENTRADAS

La condición es la variable global $_POST, es decir, si completamos el formulario y pulsamos en el botón “Agregar publicación”, nuestra condición funcionará. El campo de título contendrá datos de la variable global $_POST y el campo de texto contendrá $_POST. A continuación, funcionará el encabezado de línea ("ubicación: test.php"). Le permite redirigir al usuario a otra página, en este caso esta página será test.php. Y la línea de salida; interrumpe la ejecución de otros scripts. Esto es lo que pasó:

Editar datos en la base de datos.

Para poder editar entrada especifica en nuestra base de datos, naturalmente necesitamos determinar qué registro necesita ser editado... Sugiero mostrar el botón editar en el código de salida texto completo, editémoslo:

//SALIR TEXTO COMPLETO
si(isset($_GET["id"]))
{
$resultado = mysql_query("SELECCIONE el texto DE la página DONDE id="$_GET"");
$mifila = mysql_fetch_array($resultado);

echo $mifila;
eco "


Editar publicación";
}
//SALIR TEXTO COMPLETO


si(isset($_GET["edd"]))
{

$mifila = mysql_fetch_array($resultado);

Eco"








";
}
// ENTRADAS DE EDICIÓN DE FORMULARIO

Agregué este fragmento de código después del formulario para agregar registros. Este formulario es casi similar al formulario para agregar publicaciones. Como habrás notado, lo rehice atributos de nombre y agregó el atributo de valor. En este atributo coloqué los datos que recuperé de la base de datos. También hay aquí un campo invisible. Es necesario enviar el identificador del registro al administrador del archivo.

Ahora, para asegurarnos de que no haya una lista de encabezados en la pantalla cuando se muestre este formulario, corrijamos la condición:

//ENCABEZADOS DE SALIDA

{
$resultado = mysql_query("SELECCIONAR id,título DE la página");
$mifila = mysql_fetch_array($resultado);

hacer
{
echo "".$mifila."
";
}
mientras ($myrow = mysql_fetch_array($resultado));

eco "


Agregar publicación";
}
//ENCABEZADOS DE SALIDA

Es hora de aprender cómo se editan los registros de la base de datos. Aquí está la sintaxis:

Ahora escribamos un controlador. Aquí hay un fragmento de código que agregué inmediatamente después del controlador para agregar registros:

//EDITAR ENTRADAS

{

encabezado("ubicación: prueba.php");
salida;
}
//EDITAR ENTRADAS

La condición muestra que el controlador solo se ejecutará si hacemos clic en el botón "editar publicación". Próximo actualización en progreso bases de datos. En el campo de título colocaremos el valor de la variable global $_POST y en el campo de texto - $_POST. Editaremos la línea cuyo id sea igual a la variable global $_POST. Luego redirigimos al usuario a la lista de encabezados:

Eliminar registros de la base de datos

Bueno, lo último que nos queda por estudiar es el borrado. Es más sencillo que todos los demás, así que presta atención a la sintaxis:

Para eliminar algunas publicaciones, necesita colocar un enlace en algún lugar con el cual el usuario pueda eliminar alguna publicación... coloquemos este enlace en la salida del texto completo de la publicación:

//SALIR TEXTO COMPLETO
si(isset($_GET["id"]))
{
$resultado = mysql_query("SELECCIONE el texto DE la página DONDE id="$_GET"");
$mifila = mysql_fetch_array($resultado);

echo $mifila;
eco "


Editar publicación";
eco "
Eliminar publicación";
}
//SALIR TEXTO COMPLETO

resultado del trabajo

Aquí código completo la publicación de hoy:

//CONECTARSE A LA BASE DE DATOS (DB)
$nameDB = "phptest";//Nombre de la base de datos
$nombreSERVER = "localhost";//Servidor
$nameUSER = "root";//Nombre de usuario de la base de datos
$passUSER = "";//Contraseña de usuario de base de datos
mysql_select_db($nameDB, mysql_connect($nameSERVER,$nameUSER,$passUSER));
//CONECTARSE A LA BASE DE DATOS (DB)

//AGREGAR ENTRADAS
if(isset($_POST["title_post"]) AND isset($_POST["text_post"]))
{
$resultado = mysql_query("INSERT INTO page (title,text) VALUES ("$_POST","$_POST")");
encabezado("ubicación: prueba.php");
salida;
}
//AGREGAR ENTRADAS

//EDITAR ENTRADAS
if(isset($_POST["title_post_edd"]) AND isset($_POST["text_post_edd"]))
{
$resultado = mysql_query("ACTUALIZAR página SET título="$_POST", text="$_POST" WHERE id="$_POST"");!}
encabezado("ubicación: prueba.php");
salida;
}
//EDITAR ENTRADAS

//BORRAR ENTRADAS
si(isset($_GET["del"]))
{
$resultado = mysql_query("BORRAR DE la página DONDE id="$_GET"");
encabezado("ubicación: prueba.php");
salida;
}
//BORRAR ENTRADAS

//ENCABEZADOS DE SALIDA
if(!isset($_GET["id"]) AND !isset($_GET["add"]) AND !isset($_GET["edd"]))
{
$resultado = mysql_query("SELECCIONAR id,título DE la página");
$mifila = mysql_fetch_array($resultado);

hacer
{
echo "".$mifila."
";
}
mientras ($myrow = mysql_fetch_array($resultado));

eco "


Agregar publicación";
}
//ENCABEZADOS DE SALIDA

//SALIR TEXTO COMPLETO
si(isset($_GET["id"]))
{
$resultado = mysql_query("SELECCIONE el texto DE la página DONDE id="$_GET"");
$mifila = mysql_fetch_array($resultado);

echo $mifila;
eco "


Editar publicación";
eco "
Eliminar publicación";
}
//SALIR TEXTO COMPLETO

//FORMULARIO AGREGAR ENTRADAS
si(isset($_GET["agregar"]))
{
eco "







";
}
//FORMULARIO AGREGAR ENTRADAS

// ENTRADAS DE EDICIÓN DE FORMULARIO
si(isset($_GET["edd"]))
{
$resultado = mysql_query("SELECCIONAR * DE la página DONDE id="$_GET"");
$mifila = mysql_fetch_array($resultado);

Eco"








";
}
// ENTRADAS DE EDICIÓN DE FORMULARIO
?>

Conclusión

El material resultó bastante complejo. ¡Pero! Quizás hayas notado que solo utilicé la información que proporcioné anteriormente. ¡Esto significa que con este conocimiento, puedes crear proyectos simples en PHP! Si dominas todo esto, ¡puedes decir con orgullo que eres un programador novato! Bueno, ahora puedes empezar a crear tus primeros cms. Si tienes alguna pregunta, y lo más probable es que la tengas, pregunta, ¡te ayudaré en todo lo que pueda! ¡Buena suerte, eso es todo por hoy!

P.D.: ¿Qué es un archivo mdf? ¿Cómo abrirlo? ¿Cómo abrirlo? Estas y muchas preguntas pueden responderse en voprosi4ek.ru

En este artículo veremos formas de acceder a las tablas de la base de datos MySQL utilizando el lenguaje de consulta SQL. SQL es un acrónimo que se denomina "lenguaje de consulta estructurado".
En el lenguaje PHP existen una serie de funciones con el prefijo "mysql" para este fin. No necesitaremos muchos de ellos para procesar solicitudes. Una función sin la cual el lenguaje Ejecución PHP Las consultas SQL serían simplemente imposibles:

Recurso mysql_query(consulta)

Esta función envía una solicitud a la base de datos y devuelve el identificador del recurso si la solicitud tiene éxito.
Para conectarse a la base de datos datos mysql se debe realizar la siguiente secuencia:

$host="localhost"; // nombre de host (a confirmar con el proveedor) $database="db_name"; // nombre de la base de datos que debes crear $user="user_name"; // nombre de usuario especificado por usted o definido por el proveedor $pswd="your_pass"; // la contraseña que especificaste $dbh = mysql_connect($host, $user, $pswd) o die("No se puede conectar a MySQL."); mysql_select_db($database) o die("No puedo conectarme a la base de datos.");

Entonces mysql_conectar()- una función para conectarse a un servidor MySQL en su hosting.
A mysql_select_db() selecciona una base de datos en el servidor para conectarse.
Es decir, nos conectamos al servidor, seleccionamos una base de datos y comenzamos a trabajar.
La función die() se llama cuando ocurre un error y muestra el mensaje que especificó en la ventana del navegador.
Para terminar de trabajar con bases de datos, use la función:

Mysql_close($dbh);

Aquí $dbh- descriptor que fue devuelto por la función al conectarse conexión_mysql.
Habiendo terminado la revisión inicial, comencemos a observar las consultas SQL reales.
Para hacer esto, primero necesita crear una base de datos con un nombre específico. Y crea una tabla en ella, también con un nombre específico. En nuestros ejemplos nos referiremos a la tabla. mi_sql_table. Para crear esta tabla, ejecutemos la siguiente consulta en phpmyadmin de nuestro localhost:

CREAR TABLA `my_sql_table` (`id` INT NOT NULL , // identificador de futuros registros de la tabla `firstname` VARCHAR(50) NOT NULL , // campo de texto VARCHAR `apellido` VARCHAR(50) NOT NULL , // longitud máxima 50 caracteres CLAVE PRIMARIA (`id`) // clave primaria- identificador de identificación);

Entonces se ha creado la tabla. Ejecutemos la primera solicitud, que inmediatamente formatearemos en forma de código PHP:

\n"; echo "Nombre: ".$fila["nombre"]."
\n"; echo "Apellido: ".$fila["apellido"]."


\n"; )?>

Analicemos el código PHP del archivo. primersql.php. Comencemos con la consulta real a las tablas de la base de datos.

$consulta = "SELECCIONAR * DESDE `my_sql_table`";

Esta consulta se puede descifrar de la siguiente manera: seleccionar de la tabla mi_sql_table DB todos los registros de todos los campos. esta manera firmar * después de la palabra SELECT significa “seleccionar absolutamente todo”. Entonces, la solicitud ha sido creada. Ahora necesitas ejecutarlo:

$res = mysql_query($consulta);

Si la solicitud tiene éxito, la función consulta_mysql() nos devolverá el ID del recurso $ res.
Debemos pasarlo como parámetro a la función. mysql_fetch_array(). El nombre de esta función habla por sí solo. Aquellos. forma y genera una matriz basada en una muestra de la tabla de la base de datos. En el caso de nuestra tabla, la matriz constará de una cantidad de elementos igual a la cantidad de registros (filas) de la tabla y contendrá valores. identificación, nombre, apellido para cada fila de la tabla. De ahí el siguiente código:

Mientras($fila = mysql_fetch_array($res)) ( echo "Número: ".$fila["id"]."
\n"; echo "Nombre:".$fila["nombre"]."
\n"; echo "Apellido:".$fila["apellido"]."


\n"; )

se puede comentar así: mientras la variable que introdujimos $row no recibe cero resultados operación de función mysql_fetch_row debes enviar los valores de los campos al navegador $fila["id"], $fila["nombre"], $fila["apellido"] usando eco.
Si la solicitud se ejecuta así:

$consulta = "SELECCIONAR nombre DE `my_sql_table`";

entonces esto significará que de todas las filas solo se seleccionan los valores del campo nombre.
Por lo tanto, el código anterior debería reescribirse como:

$res = mysql_query($consulta); while($fila = mysql_fetch_array($res)) ( echo "Nombre:".$fila["nombre"]."
\n"; )

Si desea seleccionar filas de la tabla con un valor específico identificación donde estará el apellido petrov, entonces la solicitud se reescribirá de la siguiente manera:

$consulta = "SELECCIONAR ID DE `my_sql_table` donde apellido="Petrov"";

Pero si necesita averiguar el apellido de la persona que tiene el número, por ejemplo 5, la solicitud será la siguiente:

$consulta = "SELECCIONE apellido DE `my_sql_table` donde id=5";

En este caso, sabe que el resultado de la consulta estará solo en una fila de la tabla. Aquellos. no tiene sentido organizar un bucle usando mientras. Y el procesamiento de la solicitud será el siguiente

$res = mysql_query($consulta); $fila = mysql_fetch_row($res); echo "El apellido de la quinta persona de la lista es ".$row."\n";

Aquí, en lugar de mysql_fetch_array() usamos mysql_fetch_row(). Aquellos. obtener el valor de un campo (o campos) línea específica. Como teníamos un campo, apellido, podemos referirnos al único elemento de la matriz $row como $fila;.

Entonces, veamos los ejemplos más típicos de consultas MySQL. Realizaremos la revisión basándonos en la tabla. mi_sql_table:
1. Agregue un campo middle_name (segundo nombre) a la tabla my_sql_table después apellido:

$consulta = "ALTERAR TABLA `my_sql_table` AGREGAR `segundo_nombre`
VARCHAR(50) NOT NULL DESPUÉS de `apellido`";

2. Ahora eliminemos el campo apellido de la tabla my_sql_table:

$consulta = "ALTER TABLE `my_sql_table` DROP `apellido`";

3. Elimine los registros de la tabla my_sql_table con el apellido Sidorov:

$consulta = "BORRAR DE `my_sql_table` donde apellido="Sidorov"";

4. Además de los signos iguales, también “más que” o “menor que”, en lenguaje MySQL consultas hay un concepto " parece". Seleccionemos registros de la tabla my_sql_table donde contiene el apellido " insecto" :

$query = "SELECT * FROM `my_sql_table` donde el apellido es como "%dor%"";

Aquí la presencia " % " al principio y al final de "dor" y significa que la consulta buscará exactamente "dor", y no importa si está al principio, al final o en la mitad del apellido. Considere el siguiente ejemplo
5. Seleccione registros de la tabla my_sql_table con un apellido que comience con PAG. Tenga en cuenta la ubicación " % ":

$query = "SELECT * FROM `my_sql_table` donde el apellido es como "P%"";

6. Calculemos valor máximo identificación:

$consulta = "SELECCIONAR MAX(id) DE `my_sql_table`";

7. Calcule la cantidad de campos en my_sql_table con un apellido que comienza con PAG.

$query = "SELECT COUNT(*) FROM `my_sql_table` donde el apellido es como "P%"";

8. Eliminando la tabla my_sql_table:

$consulta = "DROP TABLE `my_sql_table`";

Para las consultas 1 a 3 en PHP, simplemente ejecute la consulta:

Mysql_query($consulta);

Analizamos los ejemplos más típicos de solicitudes. Creo que con su ayuda, siguiendo la lógica elemental, podrás realizar más consultas complejas a las tablas de la base de datos MySQL que creó.




Si tiene alguna otra pregunta o algo no está claro, bienvenido a nuestro

Medio almacenamiento eficiente y la recuperación de grandes cantidades de información han contribuido enormemente al exitoso desarrollo de Internet. Normalmente las bases de datos se utilizan para almacenar información. El funcionamiento de sitios conocidos como Yahoo, Amazon y Ebay depende en gran medida de la confiabilidad de las bases de datos que almacenan enormes cantidades de información. Por supuesto, el soporte de bases de datos no es sólo para beneficio de las corporaciones gigantes: los programadores web tienen varias implementaciones de bases de datos poderosas a su disposición, distribuidas a un costo relativamente bajo (o incluso gratis).

La organización adecuada de la base de datos proporciona capacidades de recuperación de datos más rápidas y flexibles. Simplifica enormemente la implementación de herramientas de búsqueda y clasificación, y los problemas de derechos de acceso a la información se resuelven utilizando controles de privilegios que se encuentran en muchos sistemas de gestión de bases de datos (DBMS). Además, se simplifican los procesos de replicación y archivo de datos.

El capítulo comienza con descripción detallada buscar y actualizar datos en MySQL, probablemente el DBMS más popular utilizado en PHP (http://www.mysql.com). En Ejemplo de MySQL se mostrará cómo se cargan y actualizan los datos de la base de datos en PHP; Veremos las herramientas básicas de búsqueda y clasificación utilizadas en muchas aplicaciones web. Luego pasaremos al soporte de PHP para ODBC (Conectividad de base de datos abierta), una interfaz genérica que se puede utilizar para conexión simultánea con diferentes DBMS. Se demostrará la compatibilidad con ODBC en PHP utilizando el ejemplo de conexión y recuperación de datos de una base de datos. datos de microsoft Acceso. El capítulo concluye con un proyecto que utiliza PHP y MySQL para crear un directorio jerárquico que contiene información sobre sitios favoritos. Al agregar nuevos sitios al catálogo, el usuario los asigna a una de las categorías estándar definidas por el administrador del sitio.

Antes de hablar de MySQL, quiero decir algunas palabras sobre SQL, el lenguaje más común para trabajar con bases de datos. lenguaje SQL es la base de casi todos SGBD existentes. Para pasar a ver ejemplos de cómo trabajar con bases de datos, debe tener al menos una comprensión general de cómo funciona SQL.

¿Qué es SQL?

SQL generalmente se describe como el lenguaje estándar utilizado para interactuar con bases de datos relacionales (ver más abajo). Sin embargo, SQL no es un lenguaje de programación como C, C++ o PHP. Más bien, es una herramienta de interfaz para realizar diversas operaciones de bases de datos, proporcionando al usuario conjunto estándar comandos Las capacidades de SQL no se limitan a recuperar datos de una base de datos. SQL admite una variedad de opciones para interactuar con una base de datos, que incluyen:

  • definición de estructura de datos
-- definición de estructuras utilizadas al almacenar datos;
  • muestreo de datos
  • -- cargar datos de la base de datos y presentarlos en un formato conveniente para la salida;
  • proceso de datos
  • -- insertar, actualizar y eliminar información;
  • control de acceso
  • -- la capacidad de permitir/prohibir el muestreo, la inserción, la actualización y la eliminación de datos a nivel de usuarios individuales;
  • control de integridad de datos
  • -- Preservación de la estructura de datos en caso de problemas como actualizaciones paralelas o fallos del sistema.

    Tenga en cuenta: en definición SQL se dijo que este lenguaje está diseñado para trabajar con relacional bases de datos. En los DBMS relacionales, los datos se organizan como un conjunto de tablas interconectadas. Las relaciones entre tablas se implementan en forma de enlaces a datos de otras tablas. Mesa Puede considerarse como una matriz bidimensional en la que la ubicación de cada elemento se caracteriza por valores específicos de fila y columna. Ejemplo base relacional los datos se muestran en la Fig. 11.1.

    Arroz. 11.1. Ejemplo de base de datos relacional

    Como se puede ver en la Fig. 11.1, cada tabla consta de filas (registros) y columnas (campos). A cada campo se le asigna un nombre único (dentro de la tabla). Observe la relación entre las tablas de clientes y pedidos, indicada por una flecha. Se incluye un breve identificador de cliente en la información del pedido, lo que evita el almacenamiento redundante del nombre del cliente y otros detalles. Hay una relación más en la base de datos que se muestra: entre las tablas de pedidos y productos. Esta conexión se establece mediante el campo prod_id, que almacena el identificador del producto solicitado por este cliente (definido por el campo custjd). Tener estas conexiones facilita la referencia a datos completos de clientes y productos mediante identificadores simples. Bien base organizada los datos se convierten en poderosa herramienta organización y almacenamiento eficiente de datos con redundancia mínima. Recuerde esta base de datos, me referiré a ella con frecuencia en más ejemplos.

    Entonces, ¿cómo se realizan las operaciones de bases de datos relacionales? Para hacer esto, SQL tiene un conjunto especial de comandos generales, como SELECCIONAR, INSERTAR, ACTUALIZAR y ELIMINAR. Por ejemplo, si necesita obtener la dirección de correo electrónico de un cliente con ID 2001cu (consulte la Figura 11.1), solo necesita ejecutar el siguiente comando SQL:

    SELECCIONE cust_email DE los clientes DONDE custjd = "2001cu"

    Todo es bastante lógico, ¿no? En resumen, el comando se ve así:

    SELECCIONE nombre_campo DESDE nombre_tabla [DONDE condición]

    Los corchetes indican que la parte final del comando es opcional. Por ejemplo, para obtener las direcciones de correo electrónico de todos los clientes de la tabla de clientes, simplemente ejecute la siguiente consulta:

    SELECCIONE cust_email DE clientes

    Supongamos que desea agregar una nueva entrada a la tabla de productos. El comando más simple insertar se ve así:

    INSERTAR en productos VALORES ("1009pr", "Tomates Rojos", "1.43");

    Si luego necesita eliminar estos datos, use el siguiente comando:

    ELIMINAR DE productos DONDE prod_id = 1009r";

    Hay muchos tipos de comandos SQL y una descripción completa de ellos está fuera del alcance de este libro. ¡Se podría escribir fácilmente un libro aparte sobre este tema! Intenté mantener los comandos SQL utilizados en los ejemplos relativamente simples pero lo suficientemente realistas. Hay muchos en la web. informacion educativa y recursos SQL. Algunos enlaces se proporcionan al final de esta sección.

    No es necesario escribir comandos SQL en caracteres mayúsculos. Sin embargo, prefiero esta notación porque ayuda a distinguir los componentes de la solicitud.

    Dado que está leyendo este libro, probablemente le interese la pregunta de cómo se organiza el trabajo con bases de datos en entorno web? Como regla general, primero, usando algunos

    o un lenguaje de interfaz (PHP, Java o Perl), se crea una conexión a la base de datos, después de lo cual el programa accede a la base de datos con consultas utilizando un conjunto estándar de herramientas. Se puede considerar un lenguaje de interfaz como una especie de “pegamento” que une la base de datos a la Web. Recurro a mi lenguaje de interfaz de usuario favorito: PHP.

    Recursos adicionales

    A continuación se enumeran algunos recursos en línea relacionados con SQL. Serán útiles tanto para principiantes como para programadores experimentados.

    • Tutoriales de SQL: http://perl.about.com/compute/perl/cs/beginningsql/index.htm.
    • SQLCourse.com (con base de datos de muestra): http://www.sqlcourse.com.
    • Web de SQL para geeks: http://www.arsdigita.com/books/sql.
    • Introducción a SQL (aplicado a MySQL): http://www.devshed.com/Server_side/MySQL/Intro.

    Soporte de base de datos en PHP

    Si me pidieran que nombrara la mayoría aspecto importante PHP, probablemente me quedaría con el soporte de bases de datos. PHP proporciona un amplio soporte para prácticamente todos los servidores de bases de datos que existen, incluidos:

    PostgreSQL
    Sólido
    Sybase
    base de datos UNIX

    File-Pro (solo lectura)

    Velods

    Oráculo (OCI7 y OC18)

    Como muestra esta lista, el soporte de bases de datos de PHP varía desde la compatibilidad con bases de datos que todos conocen (como Oracle) hasta aquellas de las que mucha gente ni siquiera ha oído hablar. Moraleja de la historia: si va a utilizar un DBMS serio para almacenar información distribuida en la Web, lo más probable es que esta base de datos sea compatible con PHP. El soporte de bases de datos en PHP está representado por un conjunto de funciones estándar para conectarse a la base de datos, procesar solicitudes y desconectar la conexión.

    Una descripción detallada de todas las bases de datos compatibles está claramente fuera del alcance de este libro. Sin embargo, el servidor MySQL da una buena idea de las capacidades generales de soporte de bases de datos en PHP. Por esta razón, los ejemplos del resto de este y de todos los demás capítulos del libro utilizarán sintaxis MySQL. Independientemente del servidor de base de datos con el que trabaje, adaptar los ejemplos no le supondrá mucha dificultad.

    Instalación

    Una de las razones por las que MySQL es tan popular entre los usuarios de PHP es que el soporte para el servidor se incluye automáticamente con PHP. Por lo tanto, sólo debe asegurarse de que el paquete MySQL esté instalado correctamente. El DBMS MySQL es compatible con casi cualquier sistema operativo importante, incluidos FreeBSD, Solaris, UNIX, Linux y varias versiones de Windows. Aunque la política de licencias de MySQL es más flexible que la de otros servidores de bases de datos, le recomiendo encarecidamente que revise la información de licencias publicada en el sitio web de MySQL (http://www.mysql.com).

    Se puede aceptar la última versión de MySQL desde cualquier sitio espejo. Una lista completa de sitios espejo está disponible en http://www.mysql.com/downloads/mirrors.html. En el momento de escribir este artículo, la última versión estable de MySQL era la 3.22.32 y la versión 3.32 estaba en versión beta. Por supuesto siempre debes instalar la última versión. versión estable, es lo mejor para usted. Visite su sitio espejo más cercano y descargue la versión que se adapte a sus necesidades. Sistema operativo. En la parte superior de la página hay enlaces a nuevas versiones para varias plataformas. Asegúrese de leer la página completa, ya que termina con algunos enlaces específicos del sistema operativo.

    El equipo de desarrollo de MySQL ha preparado documentación detallada que describe el proceso de instalación. Recomiendo revisar detenidamente todos los aspectos generales de la instalación, sin limitarse a información específica de su sistema operativo.

    Configurando MySQL

    Después de una instalación exitosa, es necesario configurar el servidor MySQL. El proceso de configuración consiste principalmente en crear nuevas bases de datos y editar mesas privilegios MySQL. Las tablas de privilegios controlan el acceso a las bases de datos MySQL. Configurar las mesas correctamente hace una gran diferencia papel importante en la seguridad de sus bases de datos, por lo que antes de iniciar el sitio en modo de producción, debe dominar completamente el sistema de privilegios.

    A primera vista, las tablas Privilegios de MySQL Parecen intimidantes, pero si los comprende correctamente, obtener más apoyo se convierte en una tarea muy sencilla. Una descripción completa de las tablas de privilegios está más allá del alcance de este libro. Sin embargo, existen muchos recursos en la Web diseñados para ayudar a los principiantes. Usuarios de MySQL. Para obtener más información, visite el sitio web de MySQL (http://www.mysql.com).

    Después de instalar y configurar exitosamente el paquete MySQL, ¡puede comenzar a experimentar con bases de datos en la Web! La siguiente sección está dedicada a este tema. empecemos estudiando Soporte MySQL en PHP.

    Funciones PHP estándar para trabajar con MySQL

    Entonces, ha creado y probado con éxito todos los permisos necesarios; todo está listo para trabajar servidor mysql. En esta sección, presentaré funciones PHP estándar que puede utilizar para comunicarse fácilmente entre scripts PHP y el servidor MySQL. La secuencia general de acciones al interactuar con el servidor MySQL se ve así:

    1. Establezca una conexión con el servidor MySQL. Si el intento falla, muestra el mensaje correspondiente y finaliza el proceso.
    2. Seleccione la base de datos del servidor MySQL. Si el intento de selección falla, muestra el mensaje correspondiente y finaliza el proceso. Es posible abrir varias bases de datos simultáneamente para procesar consultas.
    3. Procesar solicitudes a la base de datos (o bases de datos) seleccionada.
    4. Una vez completado el procesamiento de la consulta, cierre la conexión al servidor de la base de datos.

    Los ejemplos de esta sección utilizan las tablas de productos, clientes y pedidos (consulte la Figura 11.1). Si desea probar todos los ejemplos usted mismo, cree estas tablas o copie la página de estructura para no tener que seguir hojeando el libro.

    Entonces, comencemos desde el principio, es decir, conectándonos al servidor MySQL.

    La función mysql_connect() establece una conexión con el servidor MySQL. Después de conectarse exitosamente a MySQL, puede proceder a seleccionar las bases de datos servidas por este servidor. Sintaxis de la función Mysql_connect():

    int mysql_connect ( [:/ruta//a/socket] [, nombre de usuario de cadena] [, contraseña de cadena])

    El parámetro de host contiene el nombre de la computadora host especificada en las tablas de privilegios del servidor MySQL. Por supuesto, también se utiliza para redirigir solicitudes al servidor web que ejecuta MySQL, ya que el servidor MySQL se puede conectar al servidor MySQL de forma remota. Junto con el nombre del host, se pueden especificar parámetros opcionales: el número de puerto y la ruta al socket (para el host local). Los parámetros de nombre de usuario y contraseña deben coincidir con el nombre de usuario y la contraseña especificados en las tablas de privilegios de MySQL. Tenga en cuenta que todos los parámetros son opcionales porque las tablas de privilegios se pueden configurar para permitir conexiones sin verificación. Si no se especifica el host, mysql_connect() intenta conectarse al host local.

    Ejemplo de apertura de una conexión a MySQL:

    @mysql_connect("host local", "web", "4tf9zzzf")

    En este ejemplo, localhost es el nombre de la computadora, web es el nombre de usuario y 4tf9zzzf es la contraseña. El signo @ antes de llamar a mysql_connect() suprime cualquier mensaje de error producido cuando falla el intento de conexión; se reemplaza por el mensaje especificado al llamar a die(). Tenga en cuenta que el valor devuelto por rnysql_connect() no se utiliza en este ejemplo. Si el programa utiliza sólo una conexión al servidor MySQL, esto es bastante normal. Pero si un programa establece conexiones a múltiples servidores MySQL en diferentes hosts, debe almacenar el ID de conexión devuelto llamando a mysql_connect() para apuntar a comandos posteriores. al servidor requerido MySQL. Ejemplo:

    $link1 = @mysql_connect("www.somehost.com", "web", "abcde") o die("No se pudo conectar a

    ¡Servidor MySQL!");

    $linkl = @mysql_connect("www.someotherhost.com", "usr", "secret") o die("No se pudo conectar

    al servidor MySQL!");

    Los identificadores $link1 y $link2 se pasan en consultas posteriores a las bases de datos. Pronto aprenderá exactamente cómo dirigir la solicitud al servidor correcto utilizando el ID de conexión.

    La función mysql_pconnect() proporciona soporte para conexiones persistentes. En entornos multiusuario, se recomienda utilizar mysql_pconnect() en lugar de mysql_connect() para ahorrar recursos del sistema. Los tipos de parámetros y el valor de retorno de la función mysql_pconnect() son exactamente los mismos cmysql_connect().

    mysql_select_db()

    Después de conectarse exitosamente a MySQL, debe seleccionar una base de datos ubicada en el servidor. Para esto se utiliza la función mysql_select_db(). Sintaxis de la función Mysql_select_db():

    entero mysql_select_db (cadena nombre_base_datos [, entero identificador_conexión])

    El parámetro nombre_base de datos define la base de datos seleccionada, identificador

    que es devuelto por la función mysql_select_db(). Tenga en cuenta: parámetro

    Connection_identifier es opcional solo cuando hay una conexión abierta a

    Servidor MySQL. Si hay varias conexiones abiertas, esta opción

    debe indicarse. Un ejemplo de selección de una base de datos usando la función mysql_select_db():

    or die("¡No se pudo conectar al servidor MySQL!");

    Si solo se selecciona una base de datos en el programa, no es necesario guardar su identificador. Sin embargo, si selecciona varias bases de datos, los ID devueltos se conservan para que pueda hacer referencia a la base de datos correcta al procesar la solicitud. Si no se especifica ningún ID, se utiliza la última base de datos seleccionada.

    Después de terminar de trabajar con el servidor MySQL, se debe cerrar la conexión. La función mysql_close() cierra la conexión especificada por el parámetro opcional. Si no se especifica el parámetro, la función mysql_close() cierra el último conexión abierta. Sintaxis de la función Mysql_close():

    intmysql_close()

    Ejemplo de uso de mysql_close():

    @mysql_connect("localhost", "web", "4tf9zzzf")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa") o die("¡No se pudo seleccionar la base de datos de la empresa!"); print "¡Estás conectado a una base de datos MySQL!";

    En este ejemplo, no es necesario especificar una ID de conexión porque solo hay una conexión abierta al servidor en el momento en que se llama a mysql_close().

    No es necesario cerrar las conexiones abiertas por mysql_pconnect().

    La función mysql_query() proporciona una interfaz para consultar bases de datos

    datos. Sintaxis de la función Mysql_query():

    int mysql_query (consulta de cadena [, int identificador_conexión])

    El parámetro de consulta contiene el texto de la consulta en SQL. La solicitud se envía a la conexión identificada por el parámetro connect_identifier opcional o, si no hay ningún parámetro, a la última conexión abierta.

    Los programadores sin experiencia a menudo piensan erróneamente que la función mysql_query() devuelve los resultados del procesamiento de consultas. Esto no es cierto: dependiendo del tipo de consulta, llamar a mysql_query() puede tener diferentes consecuencias. Cuando un comando SQL SELECT se ejecuta correctamente, se devuelve un identificador de resultado, que posteriormente se pasa a la función mysql_result() para su posterior formateo y visualización de los resultados de la consulta. Si falla el procesamiento de la solicitud, la función devuelve FALSO. La función mysql_result() se describe en una de las siguientes secciones. La cantidad de registros que participan en una consulta se determina utilizando la función mysql_num_rows(). Esta función también se describe a continuación.

    Dicho esto, daré ejemplos del uso de mysql_query() sólo después de describir las funciones mysql_result() y mysql_affected_rows().

    Si le preocupa que el procesamiento de solicitudes esté consumiendo demasiada memoria, llame función estándar PHP mysql_free_result. Cuando se llama, se le pasa el ID del resultado devuelto por mysql_query(). La función mysql_free_result() libera toda la memoria asociada con la consulta dada.

    mysqLaff ected_rows()

    En muchas situaciones, necesita saber el número de registros que participan en consulta SQL con comandos INSERTAR, ACTUALIZAR, REEMPLAZAR o ELIMINAR. El problema se resuelve mediante la función mysql_affected_rows(). Sintaxis de la función:

    int mysql_affected_rows()

    Tenga en cuenta que el parámetro connect_id es opcional. Si no se especifica, mysql_affected_rqws() intenta utilizar la última conexión abierta. Ejemplo:

    // Conéctese al servidor y seleccione una base de datos

    @mysql_connect("localhost", "web". "4tf9zzzf")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa") o die("¡No se pudo seleccionar la base de datos de la empresa!");

    // Crea una solicitud

    $query = "ACTUALIZAR productos SET prod_name = \"melón\"

    DONDE prod_id = \"10001pr\";

    // Ejecutar la solicitud

    // Determinar el número de registros actualizados

    imprimir "Fila total actualizada; ".mysql_affected_rows();

    La ejecución de este fragmento producirá el siguiente resultado:

    Fila total actualizada: 1

    La función mysql_affected_rows() no funciona con consultas basadas en el comando SELECT. Para determinar la cantidad de registros devueltos por una llamada SELECT, use la función mysql_num_rows(), que se describe en la siguiente sección.

    En una situación específica, la función mysql_affected_rows() falla. Al ejecutar un comando DELETE sin una cláusula WHERE, mysql_affected_rows() siempre devuelve 0.

    mysql_num_rows()

    La función mysql_num_rows() determina el número de filas devueltas por un comando SELECT. Sintaxis de la función Mysql_num_rows():

    int mysql_num_rows(resultado int)

    Ejemplo de uso de mysql_num_rows():

    // Conéctate al servidor y selecciona una base de datos @mysql_connect("localhost", "web", "4tf9zzzf")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa") o die("¡No se pudo seleccionar la base de datos de la empresa!");

    //Selecciona todos los productos cuyos nombres comiencen con "p"

    $query = "SELECCIONE prod_name DE productos DONDE prod_name COMO \"p*\"";

    imprimir "Total de filas seleccionadas: ".mysql_num_rows($resultado);

    Dado que la tabla contiene sólo un producto cuyo nombre comienza con la letra p (peras), sólo se devuelve un registro. Resultado:

    Total de filas seleccionadas: 1

    La función mysql_result() se usa junto con mysql_query() (cuando se ejecuta una consulta con un comando SELECT) para recuperar un conjunto de datos. Sintaxis de la función Mysql_resu1t():

    int mysql_result (int result_identifier, int record [. campo mixto"]")

    El parámetro result_identifier pasa el valor devuelto por la función mysql_query(). El parámetro de registro se refiere a un registro específico en el conjunto de datos identificado por el parámetro result_id. Finalmente, en un parámetro opcional se puede pasar el campo:

    • desplazamiento del campo de la tabla;
    • nombre del campo;
    • nombre del campo en formato nombre_campo_nombre_tdblitz.

    El Listado 11.1 utiliza la base de datos que se muestra en la Figura. 11.1.

    Listado 11.1. Recuperar y formatear datos en una base de datos MySQL

    @mysql_connect("localhost", "web", "ffttss")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa")

    //Selecciona todos los registros de la tabla de productos.

    $consulta = "SELECCIONAR * DE productos"; $resultado = mysql_query($consulta);

    imprimir "

    \norte";

    imprimir "

    \norte \norte\norte";

    mientras ($x< mysql_numrows($result)) :

    $id = mysql_result($resultado. $x. "prod_id");

    $nombre = mysql_result($resultado, $x, "prod_name");

    $precio = mysql_result($resultado. $x, "prod_price");

    imprimir "

    \norte";

    imprimir "

    \norte \norte \norte";

    imprimir "

    \norte";

    imprimir "

    ID del productoNombre del productoPrecio del producto
    $identificación$nombre$precio
    ";

    Como resultado de ejecutar este ejemplo con los datos que se muestran en la Fig. 11.1, se obtendrá el siguiente resultado:

    Listado 11.2. Resultado del Listado 11.1

    ID del productoNombre del productoPrecio del producto

    1000pr

    manzanas

    1.23

    1001pr

    naranjas

    2.34

    1002pr

    plátanos

    3.45

    1003pr

    peras

    4.45

    La función mysql_result() es útil para trabajar con conjuntos de datos relativamente pequeños, pero hay otras funciones que funcionan mucho más eficientemente, a saber, las funciones mysql_fetch_row() y mysql_fetch_array(). Estas características se describen en las siguientes secciones.

    mysql_fetch_row()

    Generalmente es mucho más conveniente asignar los valores de todos los campos de un registro a los elementos de la matriz indexada a la vez (comenzando en el índice 0), en lugar de llamar repetidamente a mysql_result() para obtener campos individuales. El problema se resuelve mediante la función mysql_fetch_row(), que tiene la siguiente sintaxis:

    matriz mysql_fetch_row (resultado int)

    El uso de la función list() en combinación con mysql_fetch_row() guarda varios comandos necesarios al usar mysql_result(). El Listado 11.3 muestra el código del Listado 11.1 reescrito usando list() y mysql_fetch_row().

    Listado 11.3. Obteniendo datos usando la función mysql_fetch_row()

    @mysql_connect("localhost", "web", "ffttss") o die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa") o die("¡No se pudo seleccionar la base de datos de productos!");

    $consulta = "SELECCIONAR * DE productos";

    $resultado = mysql_query($consulta);

    imprimir "

    \norte";

    imprimir "

    \norte \norte\norte";

    mientras ($fila = mysql_fetch_array($resultado)) :

    imprimir "

    \norte":

    imprimir "

    \norte \norte \norte";

    imprimir "

    \norte";

    imprimir "

    ID del productoNombre del producto

    Precio del producto

    ".$fila["prod_id"]."".$fila["prod_name"]."

    " .$fila["prod_price"]. "
    ";

    El Listado 11.3 produce el mismo resultado que el Listado 11.1, pero usa menos comandos.

    mi sq l_f etch_array()

    La función mysql_fetch_array() es similar a mysql_fetch_row(), sin embargo, de forma predeterminada los valores de los campos de registro se almacenan en de asociación formación. Sin embargo, puedes elegir el tipo de indexación (asociativa, numérica o combinada). Sintaxis de la función Mysql_fetch_array():

    matriz mysql_fetch_array (identificador de resultado int [, tipo_indexación])

    El parámetro result_identifier pasa el valor devuelto por la función mysql_query(). El parámetro indexing_type opcional toma uno de los siguientes valores:

    • MYSQL_ASSOC: la función mysql_fetch_array() devuelve una matriz asociativa. Si no se especifica, este valor se utiliza como valor predeterminado;
    • MYSQL_NUM: la función mysql_fetch_array() devuelve una matriz indexada numéricamente;
    • MYSQL_BOTH: se puede acceder a los campos del registro devuelto mediante índices numéricos o asociativos.

    El Listado 11.4 contiene otra versión del código de los Listados 11.1 y 11.3. Esta vez se utiliza la función mysql_fetch_array(), que devuelve una matriz asociativa de campos.

    Listado 11.4. Obteniendo datos usando la función mysql_fetch_array()

    @mysql_connect("host local", "web", "ffttss")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa")

    or die("¡No se pudo seleccionar la base de datos de productos!");

    $consulta = "SELECCIONAR * DE productos";

    $resultado = mysql_query($consulta);

    "

    \norte";

    imprimir "

    \norte \norte\norte";

    imprimir "

    \norte";

    imprimir "

    \norte \norte \n" ;

    imprimir "

    \norte";

    imprimir "

    ID del productoNombre del producto Precio del producto
    ".$fila["prod_id"]."".$fila["prod_name"]."" . $fila["prod_price"] . "
    ";

    El Listado 11.4 produce el mismo resultado que los Listados 11.1 y 11.3.

    Lo que ahora sabes sobre la funcionalidad de MySQL en PHP es suficiente para empezar a crear algunas aplicaciones bastante interesantes. La primera aplicación que veremos es un motor de búsqueda sencillo. Este ejemplo demuestra el uso de formularios HTML (consulte el capítulo anterior) para obtener datos que luego se utilizan para recuperar información de la base de datos.

    Un ejemplo de un motor de búsqueda simple en PHP.

    Todos hemos tenido que utilizar motores de búsqueda web más de una vez, pero ¿cómo funcionan esos sistemas? El motor de búsqueda más sencillo acepta al menos una palabra clave. Esta palabra se incluye en la consulta SQL, que luego se utiliza para recuperar información de la base de datos. El motor de búsqueda formatea el resultado de la búsqueda según uno u otro criterio (por ejemplo, por categoría o grado de coincidencia).

    El motor de búsqueda que se muestra en el Listado 11.5 está diseñado para buscar información de clientes. En el formulario, el usuario ingresa una palabra clave y selecciona una categoría (nombre de cliente, ID o dirección de correo electrónico) en la que buscar. Si el nombre, ID o dirección ingresada por el usuario existe, el motor de búsqueda recupera los atributos restantes de la base de datos. Luego, utilizando el ID del cliente de la tabla de pedidos, seleccione

    historial de pedidos. Todos los pedidos realizados por este cliente se muestran en orden descendente de volumen. Si la palabra clave especificada no aparece en la categoría especificada por el usuario, la búsqueda se detiene, el programa muestra el mensaje correspondiente y muestra el formulario nuevamente.

    Listado 11.5. El motor de búsqueda más simple (searchengine.php)

    "

    Palabra clave:


    Enfoque de búsqueda:


    ,

    // Si el formulario aún no se ha mostrado, muéstralo

    si (Sseenform! = "y") :

    imprimir $formulario; demás:

    @mysql_connect("localhost", "web", "ffttss")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa")

    // Construye y ejecuta la consulta

    $consulta = "SELECCIONAR id_cliente. nombre_cliente, correo electrónico_cliente

    DE clientes DONDE $categoría = "$palabra clave"";

    $resultado = mysql_query($consulta);

    // Si no se encuentran coincidencias, muestra un mensaje

    // y volver a mostrar el formulario

    si (mysql_num_rows($resultado) == 0):

    print "Lo sentimos, pero no se encontraron coincidencias. Intente realizar su búsqueda nuevamente:";

    // Coincidencias encontradas. Formatee y muestre los resultados; de lo contrario:

    // Formatear y mostrar valores de campo.

    lista($id, $nombre, $correo electrónico) = mysql_fetch_row($resultado);

    imprimir "

    Información del cliente:

    ";

    imprimir " Nombre:$nombre
    ";

    imprimir " Número de identificación:$identificación
    ";

    imprimir " Correo electrónico: $correo electrónico
    ";

    imprimir "

    Historial de pedidos:

    ";

    // Construye y ejecuta una consulta en la tabla "órdenes"

    $consulta = "SELECCIONAR id_pedido, id_prod, cantidad

    DESDE pedidos DONDE cust_id = "$id"

    PEDIR POR cantidad DESC";

    $resultado = mysql_query($consulta):

    imprimir "

    ";

    imprimir "

    ";

    // Formatear y mostrar registros encontrados.

    while (lista($order_id, $prod_id, $cantidad) = mysql_fetch_row($resultado));

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    ID de pedidoID del productoCantidad
    $id_pedido$prod_id$cantidad
    ";

    Si ingresa la palabra clave Mi 1 apo y selecciona la categoría Nombre del cliente de la lista desplegable, el programa muestra la siguiente información:

    Información del cliente:

    Nombre: Milán

    Identificación#: 2000cu

    Correo electrónico: [correo electrónico protegido]

    ID de pedido ID del producto Cantidad
    100003 1000pr 12
    100005 1002pr 11

    Por supuesto, analizamos la implementación más simple de un motor de búsqueda. Hay muchas opciones adicionales: buscar varias palabras clave, buscar palabras clave incompletas o seleccionar automáticamente publicaciones con palabras clave similares. Intente utilizar su imaginación creativa e impleméntelos usted mismo.

    mesas de clasificación

    Al generar datos de una base de datos, es necesario brindar la posibilidad de ordenarlos según varios criterios. Como ejemplo, veamos los resultados que muestra nuestro motor de búsqueda; preste especial atención a lo siguiente después del encabezado Historial de pedidos: (Historial de pedidos). Supongamos que la lista es muy larga y desea ordenar los datos por ID de producto (o ID de pedido). Para entender mejor de qué estamos hablando, recomiendo visitar uno de mis sitios favoritos, http://download.cnet.com. Al ver programas en una categoría específica, si hace clic en el encabezado de una columna (título, fecha de publicación, número de descargas o tamaño de archivo), la lista se ordena automáticamente según el contenido de la columna especificada. A continuación se muestra cómo implementar esta característica.

    En el Listado 11.6, recuperamos datos de la tabla de pedidos. De forma predeterminada, los datos se ordenan en orden descendente por volumen de pedido (campo de cantidad). Sin embargo, al hacer clic en cualquier encabezado de tabla, la página se recarga con la tabla ordenada por la columna especificada.

    Listado 11.6. Ordenar tablas (tablesorter.php)

    // Conéctese al servidor MySQL y seleccione una base de datos

    @mysql_connect("localhost". "web", "ffttss")

    or die("¡No se pudo conectar al servidor MySQL!");

    @mysql_select_db("empresa")

    or die("¡No se pudo seleccionar la base de datos de la empresa!");

    // Si el valor de la variable $key no está establecido, el valor predeterminado

    // se utiliza el valor "cantidad" if (! isset($key)) :

    $clave = "cantidad"; endif;

    // Crea y ejecuta una solicitud.

    // Los datos seleccionados se ordenan en orden descendente según la columna $key

    $query = "SELECCIONE order_id, cust_id, prod_id, cantidad DE pedidos ORDEN POR $key DESC" $resultado = mysql_query($query);

    //Crear encabezado de tabla

    imprimir "

    ";

    imprimir "

    ";

    // Formatear y mostrar cada fila de la tabla

    mientras (lista($order_id,$cust_id,$prod_id, $cantidad)

    Mysql_fetch_row($resultado)) :

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    ";

    // Terminar la mesa

    imprimir "

    ID de pedido ID de cliente ID del producto Cantidad

    $id_pedido$cust_id$prod_id

    $cantidad

    ";

    Para la base de datos de la empresa que se muestra en la Fig. 11.1, la salida estándar del Listado 11.6 se ve así:

    ID de pedido ID de cliente ID del producto Cantidad
    2000cu 1000pr 12
    2000cu 1002pr 11
    2000cu 1000pr 9
    2000cu 1001pr 5
    2000cu 1002pr 3

    Tenga en cuenta: los títulos de las tablas son hipervínculos. Dado que la clasificación predeterminada es por campo de cantidad, los registros se ordenan en orden descendente desde la última columna. Si hace clic en el enlace Order_ID, la página se recarga, pero esta vez las entradas se ordenan en orden descendente por ID de pedido. La tabla se verá así:

    ID de pedido ID de cliente ID del producto Cantidad
    2000cu 1002pr 11
    2000cu 1000pr 9
    2000cu 1000pr 12
    2000cu 1001pr 5
    2000cu 1002pr 3

    Ordenar la salida es de gran beneficio al formatear bases de datos. Una simple modificación de la consulta SELECT le permite organizar los datos según cualquier criterio: registros ascendentes, descendentes o agrupados.

    Con esto concluye nuestro conocimiento de MySQL. Tenga en cuenta que este capítulo no cubre todo lo que necesita saber sobre MySQL. Para obtener una lista completa de comandos MySQL en PHP, consulte la documentación (http://www.php.net/manuat).

    ODBC

    Las funciones especializadas son muy adecuadas para trabajar con un tipo específico de DBMS. Pero ¿qué pasa si tienes que conectarte a MySQL, Microsoft SQL Server e IBM DB2, todo en una sola aplicación? Un problema similar surge al desarrollar aplicaciones que no deberían depender del DBMS; Estas aplicaciones funcionan "sobre" la infraestructura de base de datos del cliente existente. ODBC (abreviatura de Open Database Connectivity) es una interfaz de programa de aplicación (API) que le permite utilizar un conjunto común de funciones abstractas para trabajar con diferentes tipos de bases de datos. Las ventajas de este enfoque son obvias: no es necesario reescribir el mismo fragmento de código varias veces solo para realizar las mismas operaciones en diferentes tipos de bases de datos.

    Trabajar con un servidor de base de datos a través de ODBC sólo es posible si este servidor es compatible con ODBC. En otras palabras, debe haber controladores ODBC para ello. Para obtener más información sobre los controladores ODBC, consulte la documentación de DBMS. Es posible que deba descargarlos adicionalmente de Internet e instalarlos en su computadora. Aunque ODBC, desarrollado por Microsoft, se ha convertido en un estándar abierto, se utiliza principalmente para trabajar con sistemas de gestión de bases de datos en la plataforma Windows; sin embargo, los controladores ODBC también existen en la plataforma Linux. A continuación se muestran enlaces a controladores para algunos DBMS populares.

    • Controladores de bases de datos para Windows 95/98/NT: http://www.microsoft.com/data/odbc
    • Tecnologías de automatización: http://www.odbcsdk.com
    • Fácilsoft: http://www.easysoft.com/products/oob/main.phtml
    • Controladores ODBC para MySQL (MyODBC): http://www.mysql.com
    • Software OpenLink: http://www.openlinksw.com

    Los controladores ODBC varían en función, plataforma y finalidad. Consulte la documentación de los paquetes específicos para obtener información sobre diversos aspectos del trabajo con estos controladores. Sin embargo, a pesar de todas las diferencias, utilizar estos controladores en PHP no supone ningún problema.

    Una vez que haya determinado qué conjunto de controladores ODBC es mejor para sus necesidades, descárguelo y siga todas las instrucciones de instalación y configuración. Después de esto, puede pasar a la siguiente sección: "Soporte ODBC en PHP".

    Soporte ODBC en PHP

    Funciones ODBC en PHP, comúnmente llamadas funciones generales de ODBC, no solo proporciona soporte ODBC estándar, sino que también le permite trabajar con algunos DBMS que tienen su propia API a través de la API ODBC estándar. Estos últimos incluyen los siguientes DBMS:

    • Adabas D;
    • IODBC;
    • IBMDB2;
    • Sólido;
    • Sybase SQL en cualquier lugar.

    Tenga en cuenta: cuando se trabaja con los DBMS enumerados, en realidad no se utiliza el mecanismo ODBC estándar. Es solo que las funciones ODBC comunes admitidas en PHP se utilizan para interactuar con bases de datos. Esto es conveniente porque si cambia a otro DBMS compatible con ODBC (o un DBMS de la lista anterior), todos sus scripts funcionarán bien.

    La compatibilidad con ODBC está integrada en la distribución PHP, por lo que, salvo raras excepciones, tendrá que hacer poca o ninguna configuración especial.

    Actualmente existen alrededor de 40 funciones ODBC comunes. Sin embargo, para recuperar información de una base de datos compatible con ODBC, varias funciones que se describen a continuación son suficientes. Para obtener una lista completa de funciones ODBC comunes en PHP, consulte la documentación (http://www.php.net/manual).

    Antes de poder consultar una base de datos compatible con ODBC, primero debe establecer una conexión con ella. La conexión es creada por la función ocbc_connect(). Sintaxis de la función odbc_connect():

    int odbc_connect (fuente de datos de cadena, nombre de usuario de cadena, contraseña de cadena [, tipo de cursor int])

    El parámetro data_source especifica la base de datos compatible con ODBC con la que está intentando comunicarse. Los parámetros de nombre de usuario y contraseña, como puede imaginar, contienen el nombre de usuario y la contraseña necesarios para conectarse a la fuente de datos. El parámetro opcional cursor_type está destinado a ayudar a solucionar problemas encontrados con algunos controladores ODBC. Puede tomar uno de cuatro valores posibles:

    • SQL_CUR_USE_IF_NEEDED;
    • SQL_CURSOR_USE_ODBC;
    • SQL_CUR_USE_DRIVER;
    • SQL CUR PREDETERMINADO.

    Es posible que no necesite utilizar esta opción, pero aún así es algo que debe tener en cuenta en caso de que su paquete ODBC no pueda manejar una solicitud en particular.

    Usar odbc_connect() en un programa es fácil. Ejemplo:

    La función se utiliza para abrir conexiones persistentes a bases de datos. Ahorra recursos del sistema porque odbc_pconnect() comprueba si una conexión determinada ya se ha abierto y, de ser así, utiliza la conexión anterior.

    Una vez que haya terminado de trabajar con una base de datos compatible con ODBC, la conexión debe cerrarse para liberar los recursos utilizados por la conexión abierta. La conexión se cierra usando la función odbc_close():

    anular odbc_close()

    El parámetro Connection_identifier contiene el identificador de la conexión abierta. Veamos un pequeño ejemplo:

    obdc_connect("myAccessDB", "usuario", "secreto")

    or die("No se pudo conectar a la base de datos ODBC");

    print "¡Actualmente conectado a la base de datos ODBC!"; odbc_close($conectar);

    Antes de la tramitación directa, la solicitud debe estar “preparada”. El problema se resuelve mediante la función odbc_prepare():

    int odbc_prepare (int identificador_conexión, solicitud de cadena)

    El parámetro connect_id pasa el identificador de conexión devuelto por la función odbc_connect(). El parámetro de solicitud contiene el texto de la solicitud que debe ejecutar el servidor. Si la solicitud no se puede completar, la función devuelve FALSO; de lo contrario, se devuelve el identificador del resultado, que se utiliza posteriormente al llamar a la función odbc_execute() (ver más abajo).

    La consulta preparada por la función odbc_prepare() es ejecutada por la función odbc_execute(). Sintaxis de la función odbc_execute():

    int odbc_execute (identificador de resultado int [, parámetros de matriz])

    El parámetro result_id especifica el identificador de resultado devuelto tras una llamada exitosa a odbc_prepare(). Se pasa un parámetro opcional solo si se pasan datos adicionales al llamar a la función.

    Considere el siguiente ejemplo:

    $connect = @obdc_connect("myAccessDB", "usuario", "secreto")

    or die("No se pudo conectar a la base de datos ODBC");

    $query = "ACTUALIZAR clientes SET cust_id = \"Milano, Inc.\"

    DONDE cust_id \"2000cu\"";

    $resultado = odbc_prepare($connect, $query) or die("¡No se pudo preparar la consulta!");

    $resultado = odbc_execute($resultado) o die("¡No se pudo ejecutar la consulta!");

    odbc_close($conectar);

    El siguiente ejemplo demuestra una transacción ODBC en la que los datos de la consulta no se muestran en el navegador (como se hace normalmente con un comando SELECT). Una transacción ODBC que utiliza una consulta QUERY se describe a continuación en la sección "odbc_result_all()".

    La función odbc_exec() combina odbc_prepare() y odbc_execute(). Sintaxis de la función odbc_exec():

    int odbc_exec (int identificador_conexión, solicitud de cadena)

    El parámetro connect_id pasa el identificador de conexión devuelto por la función odbc_connect(). El parámetro de solicitud contiene el texto de la solicitud que debe ejecutar el servidor. Si la solicitud no se puede completar, la función devuelve FALSO; de lo contrario, se devuelve el identificador del resultado, que se utiliza en llamadas de función posteriores:

    obdc_connect("myAccessDB", "usuario", "secreto")

    or die("No se pudo conectar a la base de datos ODBC");

    odbc_close($conectar);

    En este ejemplo, la función odbc_exec() intenta ejecutar una consulta cuyo texto está contenido en la variable $query. Si tiene éxito, a la variable $result se le asigna el identificador de resultado; si falla, se establece en FALSO y se imprime el mensaje pasado al llamar a die().

    odbc_result_all()

    La muy útil función odbc_result_all() formatea y muestra todas las entradas para la identificación del resultado producida por una llamada a odbc_exec() o odbc_execute(). Sintaxis de la función odbc_result_all():

    int odbc_result_all (int result_identifier [, cadena formato_tabla])

    El parámetro result_id especifica el identificador de resultado devuelto tras una llamada exitosa a odbc_exec() u odbc_execute(). El parámetro opcional table_format transmite las características de la tabla HTML. Considere el siguiente ejemplo:

    obdc_connect("myAccessDB", "usuario", "secreto")

    or die("No se pudo conectar a la base de datos ODBC");

    $consulta = "SELECCIONAR * DE clientes";

    $resultado = odbc_exec($connect, $consulta) o die("¡No se pudo ejecutar la consulta!");

    odbc_result_all($resultado, "BGCOLOR="#c0c0c0" border="1" ");

    odbc_close($conectar);

    Como resultado de ejecutar este ejemplo, el contenido de la tabla de clientes se mostrará en una tabla sobre un fondo gris claro con un borde de grosor 1. La apariencia de la tabla para los datos que se muestra en la Fig. 11.1, mostrado en la Fig. 11.2.

    Arroz. 11.2. Datos ODBC en el navegador

    odbc_free_result()

    Un buen estilo de programación requiere liberar todos los recursos asociados con las operaciones completadas. Cuando se trabaja con consultas ODBC, esta tarea se resuelve mediante la función odbc_free_result(). Sintaxis de la función odbc_free_result():

    int odbc_free_result (int identificador_resultado)

    El parámetro de función pasa el identificador del resultado, que ya no se utilizará en el programa. Recuerde que todos los recursos de memoria se liberan automáticamente cuando se completa el script; por lo tanto, llamar a odbc_free_result() sólo es necesario para consultas muy grandes que consumen grandes cantidades de memoria. A continuación se muestra un ejemplo que demuestra el uso de odbc_free_result(). Tenga en cuenta que normalmente puede prescindir de esta función a menos que desee ejecutar varias consultas en un único script, ya que toda la memoria se liberará automáticamente cuando finalice el script.

    obdc_connect("myAccessDB", "usuario", "secreto")

    or die("No se pudo conectar a la base de datos ODBC");

    $consulta = "SELECCIONAR * DE clientes":

    $resultado = odbc_exec($connect, $consulta) o die("¡No se pudo ejecutar la consulta!");

    odbc_result_all($resultado, "BGCOLOR="#c0c0c0" border="1" "");

    odbc_free_result($resultado);

    odbc_close($conectar);

    Después de que odbc_result_all() haya terminado de usar el ID del resultado, la memoria se devuelve al sistema usando odbc_free_result().

    Con esto concluye nuestra introducción a las funciones ODBC en PHP, que son indispensables al crear interfaces simples basadas en ODBC para acceder a través de la Web. En la siguiente sección, se utilizarán muchas de estas funciones para demostrar lo fácil que es interactuar con uno de los DBMS más populares, Microsoft Access, basado en PHP.

    Microsoft Access y PHP

    La popularidad del DBMS de Microsoft Access (http://www.microsoft.com/office/access) se explica en parte por su cómoda interfaz gráfica. Además de utilizar Access como un DBMS independiente, puede utilizar su interfaz gráfica para organizar el trabajo con otras bases de datos, por ejemplo, MySQL o Microsoft SQL Server.

    Para demostrar la compatibilidad con ODBC en PHP, describiré el proceso de conexión a bases de datos de Microsoft Access en PHP. Es sorprendentemente fácil de hacer, pero gracias a la popularidad de Microsoft Access, es una adición útil a su arsenal creativo. Describiré este proceso paso a paso:

    1. Cree una base de datos de Access. Se supone que ya sabe cómo hacer esto, y si no sabe cómo, pero aún desea seguir la implementación de este ejemplo, utilice los servicios del programa asistente.
    2. Creé una base de datos estándar para almacenar información de contacto usando un asistente. Asegúrese de crear varios registros en la tabla y recuerde el nombre de la tabla, ¡lo necesitaremos pronto!
    3. Guarde la base de datos en su computadora. > En el siguiente paso, organizaremos el acceso a la base de datos de Access utilizando ODBC. Seleccione Inicio > Configuración > Panel de control (Inicio > Ajustes
    4. Panel de control). Localice el icono de Fuentes de datos ODBC (32 bits) en el Panel de control. Este icono inicia el Administrador ODBC, que está diseñado para configurar varios controladores y fuentes de datos en su sistema. Inicie el programa haciendo doble clic en este icono. La ventana Administrador se abre en la pestaña DSN de usuario de forma predeterminada. Esta pestaña enumera fuentes de datos que son específicas de un usuario específico y solo se pueden usar en esa computadora. En este ejemplo, esta es la fuente de datos que se utilizará.
    5. Haga clic en el botón Agregar... en el lado derecho de la ventana. Se abre una nueva ventana para seleccionar un controlador diseñado para funcionar con la nueva fuente. Seleccione la línea Microsoft Access Driver (*.mdb) y haga clic en Finalizar.
    6. Aparece una nueva ventana en la pantalla: Instalación del controlador ODBC para Microsoft Access (Configuración de ODBC Microsoft Access). Busque el cuadro de texto Nombre de la fuente de datos en el formulario e ingrese el nombre de la base de datos de Access que creó. Si lo desea, puede ingresar una descripción en el cuadro de texto ubicado directamente debajo del campo Nombre de la fuente de datos.
    7. Haga clic en el botón Seleccionar...; aparece una ventana estilo Explorador de Windows. Le pide que busque una base de datos a la que se accederá mediante ODBC.
    8. Busque su base de datos en el árbol de directorios y haga doble clic en ella. Volverá a la ventana Instalar el controlador ODBC para Microsoft Access. La ruta a la base de datos seleccionada se muestra encima del botón Seleccionar.... Haga clic en Aceptar.

    Todo lo que tienes que hacer es crear un script en el que trabajarás con la base de datos vía ODBC. En el siguiente escenario, se utilizarán las funciones ODBC comunes (arriba) para mostrar toda la información de una tabla de contactos creada con el asistente de Access. Sin embargo, antes de considerar el escenario, es útil saber cómo se ve la tabla Contactos en Access (Figura 11.3).

    Arroz. 11.3. Tabla de contactos en MS Access

    Ahora que sabe qué información se recuperará de la base de datos, podemos pasar al script. Si ha olvidado qué hace una función, consulte la descripción al principio de este capítulo. Los resultados del Listado 11.7 se muestran en la Figura. 11.4.

    Listado 11.7. Uso de funciones ODBC para trabajar con MS Access

    // Conéctate a la fuente de datos ODBC "ContactDB" ;connect = odbc_connect("ContactDB", "","")

    o morir("No se pudo conectar a la fuente de datos.");

    //Crear texto de solicitud

    $query = "SELECCIONE Nombre, Apellido, Teléfono celular, Correo electrónico DE Contactos";

    //Preparar la solicitud

    $resultado = odbc_prepare($conectar,$consulta);

    // Ejecutar la consulta y mostrar los resultados.

    odbc_execute($resultado);

    odbc_result_all($resultado, "BGCOLOR="#c0c0c0" border=1");

    // El procesamiento de los resultados está completo, memoria libre odbc_free_result($result);

    // Cerrar la conexión odbc_close($connect);

    ¿No es todo sencillo? Lo mejor es que este script es totalmente compatible con cualquier otro DBMS que admita ODBC. Para practicar, intente repetir todos los pasos descritos para otro DBMS, ejecute el script y obtendrá los mismos resultados que se muestran en la Fig. 11.4.

    Arroz. 11.4. Contenido de la tabla Contactos en un navegador web

    Proyecto: Directorio de enlaces PHP

    La forma más sencilla de llenar su sitio con contenido real es dejar que el usuario lo haga por usted. Por supuesto, la forma más conveniente de ingresar datos es utilizar un formulario HTML.

    La información ingresada por el usuario debe ser procesada y almacenada. El borrador del capítulo anterior mostró con qué facilidad se puede realizar esta tarea usando PHP y un archivo de texto. Por supuesto, los archivos de texto son buenos para almacenar datos relativamente pequeños y simples, pero en las aplicaciones web completas, la información generalmente se almacena en bases de datos. En este ejemplo, se utiliza una base de datos MySQL para almacenar información sobre sitios web. Para facilitar la navegación, los sitios se dividen en varias categorías. El usuario puede ingresar información sobre el sitio en formato HTML y asignarla a una de las categorías estándar definidas por el administrador del sitio. Además, el usuario puede cargar la página de índice y ver una lista de todos los sitios en una categoría particular haciendo clic en su título.

    Primero, debe decidir qué información del sitio se almacenará en la base de datos SQL. Para simplificar, me limitaré al siguiente conjunto de atributos: título, URL, categoría, fecha de inclusión y descripción. Entonces, una definición de tabla en MySQL se parece a esto:

    mysql>crear marcadores de tabla (categoría INT, nombre_sitio char(35), url char(50),

    fecha_fecha agregada, descripción char(254));

    Hay un par de cosas que vale la pena señalar acerca de la definición de la tabla de marcadores. En primer lugar, la información sobre la categoría del sitio se almacena, por algún motivo, como un número entero. -- pero ¿no sería más correcto hacer que los nombres de las categorías sean más significativos y comprensibles para el usuario? No se preocupe, se creará una matriz en el archivo de inicialización que asocia índices enteros con nombres de categorías. En el futuro, el administrador podrá cambiar e incluso eliminar categorías individuales. Almacenar información sobre categorías simplifica enormemente esta tarea. Además, un campo de número entero ahorra espacio en disco porque el nombre de la categoría se almacena varias veces en la tabla. Otra circunstancia relacionada con la estructura de la tabla es la limitación de la longitud de la descripción a 254 caracteres. Dependiendo de este volumen de descripciones, en lugar del tipo char(), puedes usar el tipo medio o texto. Para obtener más información sobre los tipos de campos, consulte la documentación de MySQL.

    El siguiente paso para trabajar en esta aplicación es crear un archivo de inicialización. Además de las variables globales, se definen dos funciones en el archivo de inicialización: add_bookmark() y view_bookmark(). La función add_bookmark() toma la entrada del usuario del formulario y la incluye en la base de datos. La función view_bookmark() obtiene el índice de una categoría, lee todas las publicaciones que pertenecen a la categoría especificada de la base de datos y las muestra en el navegador. El archivo de inicialización de la aplicación init.inc con comentarios se muestra en el Listado 11.8.

    Listado 11.8. Archivo de inicialización del directorio de enlaces (init.inc)

    // Archivo: init.inc

    // Propósito: variables y funciones globales.

    // usado en el proyecto

    // Título de página estándar $title = "Mi repositorio de marcadores":!}

    // Color de fondo $bg_color = "blanco";

    $post_date = fecha("Ymd");

    "entretenimiento"

    // datos del servidor MySQL $host = "localhost"; $usuario = "raíz"; $pswd = "";

    // Nombre de la base de datos $base de datos = "libro";

    // Nombre de la tabla $bookmark_table = "marcadores";

    // Color de las celdas de la tabla $cell_color = "#c0c0c0";

    // Establece una conexión con el servidor MySQL

    @mysql_pconnect($host, $user, $pswd) o die("¡No se pudo conectar al servidor MySQL!");

    //Seleccionar base de datos

    @mysql_select_db($database) o die("¡No se pudo seleccionar la base de datos Sdatabase!");

    // Función: add_bookmark()

    función add_bookmark (Categoría, Ssitejname. $url, $descripción) (

    GLOBAL $bookmark_table, $post_date;

    $consulta = "INSERTAR EN $bookmark_table

    VALORES(\"$categoría\", \"$nombre_sitio\", \"$url\", \"$fecha_postal\", \"$descripción\")";

    $resultado = @mysql_query($consulta) o die("¡No se pudo insertar la información del marcador!");

    ) // agregar_marcador<

    // Función: view_bookmark()

    // Propósito: seleccionar todos los enlaces de la tabla de marcadores,

    función view_bookmark ($categoría) (

    GLOBAL $bookmark_table, $cell_color, $categorías;

    $consulta = "SELECCIONAR nombre_sitio, URL, DATE_FORMAT(fecha_agregada,"%m-%d-%Y") AS fecha_agregada, descripción

    DESDE $tabla de marcadores DONDE categoría = $categoría ORDENAR POR fecha DESC";

    $resultado = @mysql_query($consulta);

    imprimir "

    ";

    imprimir "

    ";

    si (mysql_numrows($resultado) > 0);

    mientras ($fila = mysql_fetch_array($resultado));

    Publicado: ".$fila["fecha de adición"]".
    "

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    ";

    imprimir "

    Categoría: $categorías[$categoría]
    ";

    imprimir " ".$fila["nombre_sitio"]."

    imprimir "

    ";

    imprimir " http://".

    $fila["url"]."
    ";

    imprimir "

    ";

    imprimir $fila["descripción"]."
    ";

    imprimir "


    Actualmente no hay marcadores incluidos en esta categoría. ¿Por qué no agregar uno?
    Volver al índice

    imprimir " Agregar un marcador

    ";

    //ver marcador

    La siguiente página, add_bookmark.php (Listado 11.9), es donde ingresa información sobre el nuevo enlace a incluir en la base de datos. Se llama a la función add_bookmark() para procesar los datos del usuario.

    Listado 11.9. Programa add_bookmark.php

    INCLUDE("init.inc");

    <?=$title:?>

    si (! $formulario visto):

    <1nput type="hidden" name="seenform" value="y">

    Categoría:


    Nombre del sitio:


    URL: (hacer noincluya "http://"!)


    Descripción:


    add_bookmark($categoría, $nombre_sitio, $url, $descripción);

    imprimir "

    Su marcador ha sido agregado al repositorio.

    haga clic aquí para volver al índice.

    ";

    Cuando la página se carga inicialmente, el navegador muestra el formulario (Figura 11.5).

    Arroz. 11.5. Formulario presentado por la página add_bookmark.php

    La siguiente página, view_bookmark.php, simplemente llama a la función view_bookmark(). El código para esta página se muestra en el Listado 11.10.

    Listado 11.10. Programa view_bookmark.php

    INCLUDE("Listado11-8.php"); ?>

    <?=$title:?>

    view_bookmark($categoría):

    Arroz. 11.6. Ejecutando la página view_bookmark.php para la categoría de comedor

    Todo lo que queda es crear una página en la que el usuario selecciona enlaces de una lista. Llamé a este archivo index.php (Listado 11.11).

    Listado 11.11. Programa index.php

    INCLUDE("init.inc");

    alink="#808040">

    while (lista($key, Svalue) = cada uno(Scategories)) :

    imprimir " valor $
    ";

    Agregar un nuevo marcador

    Si deja la matriz $categories con los valores almacenados en el archivo init.inc, ejecutar el Listado 11.11 enviará el código HTML que se muestra en el Listado 11.12 al navegador.

    Listado 11.12. Salida generada al ejecutar index.php

    Elija la categoría de marcador para ver:

    computadoras

    entretenimiento

    comida

    estilo de vida

    gobierno

    viajar

    Agregar un nuevo marcador

    Resultados

    Este capítulo es bastante largo y para algunos lectores puede ser el más importante de todo el libro. Sin duda, trabajar con bases de datos.

    es una de las características más notables del lenguaje PHP, ya que las bases de datos amplían significativamente la funcionalidad de los sitios web. En particular, cubrimos los siguientes temas:

    • información general sobre SQL;
    • soporte de base de datos estándar en PHP;
    • información introductoria sobre el servidor MySQL;
    • funciones PHP estándar para trabajar con MySQL;
    • implementación de un sistema de búsqueda simple;
    • clasificación de mesas;
    • información general sobre ODBC;
    • funciones PHP estándar para trabajar con ODBC;
    • interacción con Microsoft Access en PHP;
    • almacenamiento de datos del usuario en el sitio web.

    Los lectores que desarrollen sitios web PHP grandes y verdaderamente dinámicos se encontrarán volviendo al tema de las bases de datos una y otra vez. Recomiendo estudiar detenidamente no sólo la documentación de PHP, sino también otros recursos dedicados a las tecnologías de bases de datos. En este ámbito, como en muchas tecnologías modernas, ni siquiera los expertos siempre tienen tiempo para mantenerse al día con todas las innovaciones.

    El siguiente capítulo está dedicado a las plantillas, uno de los temas no triviales de la programación web. El uso de plantillas al programar en PHP proporciona importantes ahorros de tiempo y esfuerzo al trabajar en sitios web de gran escala.

    TRABAJANDO CON UNA BASE DE DATOS MySQL CON HERRAMIENTAS PHP

    Conferencia. Preparado por Prokhorov V.S.


    1. CONECTANDO ESCENARIOS PHP con tablas MySQL

    Veamos las funciones más utilizadas que le permiten trabajar con una base de datos MySQL usando PHP.

    Cuando PHP y MySQL interactúan, el programa interactúa con el DBMS a través de un conjunto de funciones.

    1.1 Conexión al servidor. Función conexión_mysql

    Antes de trabajar con la base de datos, es necesario establecer una conexión de red con ella, así como autorizar al usuario. Para esto se utiliza la función mysql_connect().

    recurso mysql_connect(]])

    Esta función establece una conexión de red a la base de datos MySQL ubicada en el servidor $host (por defecto es localhost, es decir, la computadora actual) y devuelve el identificador de la conexión abierta. Todo el trabajo posterior se realiza con este identificador. Todas las demás funciones que toman este identificador (identificador) como argumento identificarán de forma única la base de datos seleccionada. Al registrarse, especifique el nombre de usuario $nombre de usuario y la contraseña $contraseña (de forma predeterminada, el nombre de usuario desde el cual se ejecuta el proceso actual; al depurar scripts: root y una contraseña vacía):

    $dbpasswd = ""; //Contraseña

    //Mostrar una advertencia

    eco("

    ");

    Las variables $dblocation, $dbuser y $dbpasswd almacenan el nombre del servidor, el nombre de usuario y la contraseña.

    1.2 Desconexión del servidor. Función mysql_close

    La conexión al servidor MySQL se cerrará automáticamente cuando se complete el script o cuando se llame a la función mysql_close

    booleano mysql_close()

    Esta función cierra la conexión al servidor MySQL y devuelve verdadero si la operación es exitosa y falso en caso contrario. La función toma como argumento el identificador de conexión de la base de datos devuelto por la función mysql_connect.

    $dbubicación = "localhost"; //Nombre del servidor

    $dbuser = "raíz"; //Nombre de usuario

    $dbpasswd = ""; //Contraseña

    //Conectarse al servidor de base de datos

    //Suprime la salida de error con el símbolo @ antes de llamar a la función

    $dbcnx = @ mysql_connect($dblocation, $dbuser, $dbpasswd);

    if (!$dbcnx) //Si el descriptor es 0, la conexión no está establecida

    //Mostrar una advertencia

    eco("

    El servidor de la base de datos no está disponible actualmente, por lo que la página no se puede mostrar correctamente.");

    if (mysql_close($dbcnx)) //cerrar la conexión

    echo("Conexión de base de datos finalizada");

    echo("No pudimos completar la conexión");

    1.3 Creación de una base de datos. Función CREAR BASE DE DATOS

    El comando: crear una base de datos está disponible solo para el administrador del servidor y en la mayoría de los sitios de alojamiento no se puede ejecutar:

    CREAR BASE DE DATOSNombre de la base de datos

    Crea una nueva base de datos denominada DatabaseName.

    Un ejemplo de cómo trabajar con esta función:

    @mysql_query("CREAR BASE DE DATOS $nombrebd");

    Se recomienda utilizar apóstrofes (“SQL – comando”) en todas partes como delimitadores de líneas que contienen SQL – comandos. Esto garantiza que ninguna variable $ se interpola accidentalmente (es decir, se reemplaza por su valor) y aumenta la seguridad del script.

    El comando de creación de base de datos CREATE DATABASE está disponible solo para el superusuario y, en la mayoría de los sitios de alojamiento, es imposible que un usuario simple lo ejecute. Está disponible sólo para el administrador del servidor.

    Para experimentos, creemos una base de datos de prueba ejecutando una consulta SQL desde la línea de comando. Para hacer esto, debe iniciar sesión en MySQL e ingresar en la línea de comando de MySQL:

    mysql> crear base de datos de prueba;

    Después de esto debes escribir:

    mysql>usar base de pruebas;

    Base de datos creada:



    1.4 Seleccionar una base de datos. Función mysql_select_db

    Antes de enviar la primera petición al servidor MySQL debemos indicar con qué base de datos vamos a trabajar. La función mysql_select_db está diseñada para esto:

    bool mysql_select_db(cadena $nombre_base_datos [,recurso $identificador_enlace])

    Notifica a PHP que las operaciones futuras en la conexión $link_identifier utilizarán la base de datos $database_name.

    Usar esta función equivale a llamar al comando use en una consulta SQL, es decir, la función mysql_select_db selecciona una base de datos para seguir trabajando y todas las consultas SQL posteriores se aplican a la base de datos seleccionada. La función toma como argumentos el nombre de la base de datos seleccionada nombre_base_datos y el recurso descriptor de conexión. La función devuelve verdadero si la operación fue exitosa y falso en caso contrario:

    //Código de conexión a la base de datos

    si (! @mysql_select_db($dbname, $dbcnx))

    //Mostrar una advertencia

    eco("

    La base de datos no está disponible actualmente, por lo que la página no se puede mostrar correctamente.");

    1.5 Manejo de errores

    Si se producen errores al trabajar con MySQL (por ejemplo, los paréntesis en la consulta no están equilibrados o no hay suficientes parámetros), entonces el mensaje de error y su número se pueden obtener usando las dos funciones que se describen a continuación.

    Es importante utilizar estas funciones con cuidado y rapidez, porque de lo contrario la depuración de scripts puede resultar más difícil.

    ● Función:

    intmysql_errno()

    devuelve el número del último error informado. El identificador de conexión $link_identifier se puede omitir si solo se estableció una conexión durante la ejecución del script.

    ● Función:

    cadena mysql_error()

    no devuelve un número, sino una cadena que contiene el texto del mensaje de error. Es conveniente utilizarlo con fines de depuración. Generalmente mysql_error se usa junto con la construcción or die(), por ejemplo:

    @mysql_connect("localhost", "usuario", "contraseña")

    o die("Error al conectarse a la base de datos: ".mysql_error());

    El operador @, como es habitual, sirve para suprimir la advertencia estándar que podría aparecer en caso de error.

    En versiones recientes de PHP, las advertencias en las funciones de MySQL no se registran de forma predeterminada.

    1.6 Automatización de conexión a MySQL. Archivo ( configuración.php )

    Normalmente, hay varios scripts en un sitio que necesitan acceso a la misma base de datos.

    Se recomienda separar el código responsable de conectarse a MySQL en un archivo separado y luego conectarlo a los scripts necesarios usando la función de inclusión.

    Tiene sentido colocar las funciones para conectar, seleccionar y crear una base de datos en el mismo archivo (config.php) donde se declaran las variables con el nombre del servidor $dblocation, nombre de usuario $dbuser, contraseña $dbpasswd y nombre de la base de datos $dbname:

    Listado de config.php:

    //código config.php del archivo que contiene los parámetros para conectarse al servidor y seleccionar una base de datos

    //envía mensajes de error de conexión al navegador

    $dbubicación = "localhost"; //Nombre del servidor

    $dbname = "insertar nombre de la base de datos" //Nombre de la base de datos: en proceso de creación o existente

    $dbuser = "raíz"; //Nombre de usuario de la base de datos

    $dbpasswd = ""; //Contraseña

    //Conectarse al servidor de base de datos

    //Suprime la salida de error con el símbolo @ antes de llamar a la función

    $dbcnx=@mysql_connect($dblocation,$dbuser,$dbpasswd);

    if (!$dbcnx) //Si el descriptor es 0, la conexión al servidor de la base de datos no está establecida

    //Mostrar una advertencia

    eco("

    El servidor de la base de datos no está disponible actualmente, por lo que la página no se puede mostrar correctamente.

    ");

    //Crea la base de datos $dbname - sólo un superusuario puede hacer esto

    //Si la base de datos ya existe, habrá un error no fatal

    @mysql_query("CREAR BASE DE DATOS si no existe $dbname');

    //Código de conexión a la base de datos: hacemos una selección inequívoca de una base de datos recién creada o una base de datos ya existente

    //Suprime la salida de error con el símbolo @ antes de llamar a la función

    if(!@mysql_select_db($dbname, $dbcnx)) //Si el descriptor es 0, la conexión a la base de datos no está establecida

    //Mostrar una advertencia

    eco("

    La base de datos no está disponible actualmente, por lo que la página no se puede mostrar correctamente.

    ");

    //Pequeña función auxiliar que imprime un mensaje

    //mensaje de error en caso de error en la consulta de la base de datos

    función puterror($mensaje)

    eco("");



    2. EJECUCIÓN DE CONSULTAS DE BASE DE DATOS

    2.1 Creando una tabla. Función CREAR TABLA:

    CREAR TABLA Nombre de tabla (tipo de nombre de campo, tipo de nombre de campo)

    Este comando crea una nueva tabla en la base de datos con columnas (campos) definidas por sus nombres (FieldName) y tipos especificados. Después de crear la tabla, puede agregarle registros que consten de los campos enumerados en este comando.

    Listado test_11.php. Un programa que crea una nueva tabla en una base de datos:

    incluir "config.php";//Conéctese al servidor y seleccione una base de datos

    mysql_query("CREAR TABLA si no existe gente

    id INT AUTO_INCREMENT CLAVE PRIMARIA,

    o morir("Error de MySQL: ".mysql_error());



    Este script crea una nueva tabla de personas con dos campos. El primer campo tiene tipo INT (entero) y nombre id. El segundo es el tipo de TEXTO (cadena de texto) y el nombre del nombre.

    Si la tabla existe, la construcción or die() funcionará.

    La cláusula opcional if not exist, cuando se especifica, le dice al servidor MySQL que no debe generar un mensaje de error si ya existe una tabla con el nombre especificado en la base de datos.

    SGBD mysql es una de las muchas bases de datos soportadas en PHP. El sistema MySQL se distribuye de forma gratuita y tiene potencia suficiente para resolver problemas reales.

    Una breve introducción a MySQL

    SQL es una abreviatura de las palabras Lenguaje de consulta estructurado, que significa lenguaje de consulta estructurado. Este lenguaje es una herramienta estándar para acceder a varias bases de datos.

    El sistema MySQL es un servidor al que pueden conectarse los usuarios de computadoras remotas.

    Para trabajar con bases de datos es conveniente utilizar la herramienta incluida en el kit de desarrollador web: Denwer phpMyAdmin. Aquí puede crear una nueva base de datos, crear una nueva tabla en la base de datos seleccionada, completar la tabla con datos y agregar, eliminar y editar datos.

    MySQL define tres tipos de datos básicos: numérico, de fecha y hora y de cadena. Cada una de estas categorías se divide en muchos tipos. Los principales:


    Cada columna contiene otros especificadores después de su tipo de datos:

    TipoDescripción
    NO NULOTodas las filas de la tabla deben tener un valor en este atributo. Si no se especifica, el campo puede estar vacío (NULL)
    AUTO_INCREMENTUna característica especial de MySQL que se puede utilizar en columnas numéricas. Si deja este campo en blanco al insertar filas en una tabla, MySQL genera automáticamente un valor de ID único. Este valor será uno mayor que el valor máximo ya existente en la columna. Cada tabla no puede tener más de uno de esos campos. Las columnas con AUTO_INCREMENT deben estar indexadas
    CLAVE PRIMARIALa columna es la clave principal de la tabla. Los datos de esta columna deben ser únicos. MySQL indexa automáticamente esta columna
    NO FIRMADODespués de un tipo entero significa que su valor puede ser positivo o cero
    COMENTARIONombre de la columna de la tabla

    Creando una nueva base de datos MySQL CREAR BASE DE DATOS.

    CREAR BASE DE DATOS SI NO EXISTE `base` CONJUNTO DE CARACTERES PREDETERMINADO cp1251 COLLATE cp1251_bin

    Creando una nueva tabla llevado a cabo utilizando el comando SQL CREAR TABLA. Por ejemplo, la tabla de libros de una librería contendrá cinco campos: ISBN, autor, título, precio y número de ejemplares:

    CREAR TABLA de libros (ISBN CHAR(13) NOT NULL, PRIMARY KEY (ISBN), autor VARCHAR(30), título VARCHAR(60), precio FLOAT(4,2), cantidad TINYINT UNSIGNED); Para evitar un mensaje de error si la tabla ya existe, debes cambiar la primera línea agregando la frase "SI NO EXISTE": CREAR TABLA SI NO EXISTE libros...

    para crear campo de actualización automática con la fecha actual de tipo TIMESTAMP o DATETIME, utilice la siguiente construcción:

    CREAR TABLA t1 (ts TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, dt DATETIME DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

    Suma Los datos en esta tabla se llevan a cabo mediante el comando SQL. INSERTAR. Por ejemplo:

    INSERTAR EN libros (ISBN, autor, título, precio, cantidad) VALORES ("5-8459-0184-7", "Zandstra Mat", "Domina PHP4 por tu cuenta en 24 horas", "129", "5") ;

    Para recuperar datos de una tabla, utilice el operador SELECCIONAR. Recupera datos de la base de datos seleccionando filas que coinciden con un criterio de búsqueda determinado. La declaración SELECT viene con una gran cantidad de opciones y casos de uso.

    El * indica que todos los campos son obligatorios. Por ejemplo:

    SELECCIONAR * DE libros;

    Para acceder solo a un campo específico, debe especificar su nombre en la instrucción SELECT. Por ejemplo:

    SELECCIONE autor, título, precio DE los libros;

    Para acceder a un subconjunto de filas en una tabla, debe especificar un criterio de selección que especifique la construcción DÓNDE. Por ejemplo, para seleccionar libros económicos disponibles sobre PHP, debe crear una consulta:

    SELECCIONAR * DE libros DONDE precio % Coincide con cualquier número de caracteres, incluso los nulos
    _ Coincide exactamente con un carácter

    Para garantizar que las filas recuperadas por una consulta se enumeren en un orden específico, se utiliza la construcción ORDENAR POR. Por ejemplo:

    SELECCIONAR * DE libros ORDENAR POR precio;

    Por defecto orden clasificación va en orden ascendente. Puede invertir el orden de clasificación utilizando una palabra clave DESC:

    SELECCIONAR * DE libros ORDENAR POR precio DESC;

    Clasificar También es posible para varias columnas. En lugar de nombres de columnas, puedes utilizar sus números de serie:

    SELECCIONAR * DE libros ORDENAR POR 4, 2, 3;

    Para cambiar los valores registrados previamente en la tabla, debe usar el comando ACTUALIZAR. Por ejemplo, el precio de todos los libros aumentó un 10%:

    ACTUALIZAR libros SET precio = precio * 1.1;

    La cláusula WHERE limitará la operación ACTUALIZAR a determinadas filas. Por ejemplo:

    ACTUALIZAR libros SET precio = precio * 1.05 DONDE precio

    Para eliminar filas de la base de datos, utilice el operador BORRAR. Las filas innecesarias se especifican mediante la cláusula WHERE. Por ejemplo, se han vendido algunos libros:

    ELIMINAR DE libros DONDE cantidad = 0;

    Si necesita eliminar todas las entradas

    TRUNCAR TABLA nombre_tabla

    Para eliminar completamente una tabla use:

    DROP TABLE nombre_tabla

    Conectando PHP con la base de datos MySQL

    Después de trabajar con phpMyAdmin para crear la base de datos, puede comenzar a conectar la base de datos a la interfaz web externa.

    Para acceder a una base de datos desde la Web usando PHP, debe seguir los siguientes pasos básicos:

    • Conexión al servidor MySQL.
    • Seleccionar una base de datos.
    • Ejecutando una consulta a la base de datos:
      • suma;
      • supresión;
      • cambiar;
      • buscar;
      • clasificación.
    • Obteniendo el resultado de la solicitud.
    • Desconectarse de la base de datos.

    Para conectarse a un servidor de base de datos en PHP existe una función mysql_conectar(). Sus argumentos son nombre de la computadora, nombre de usuario y contraseña. Estos argumentos pueden omitirse. De forma predeterminada, nombre de la computadora = localhost, luego no se requieren nombre de usuario ni contraseña. Si PHP se usa en combinación con el servidor Apache, entonces puede usar la función mysql_pconnect(). En este caso, la conexión al servidor no desaparece después de que se cierra el programa o se llama a la función. mysql_close(). Funciones mysql_conectar() Y mysql_pconnect() devolver el ID de conexión si todo fue exitoso. Por ejemplo:

    $enlace = mysql_pconnect(); if (!$link) die ("No se puede conectar a MySQL");

    Una vez establecida la conexión con el servidor MySQL, debe seleccionar una base de datos. Para hacer esto, use la función mysql_select_db(). Su argumento es el nombre de la base de datos. La función devuelve verdadero si la base de datos especificada existe y se puede acceder a ella. Por ejemplo:

    $db = "muestra"; mysql_select_db($db) o die("No se puede abrir $db");

    Para agregar, eliminar, modificar y seleccionar datos, debe construir y ejecutar una consulta SQL. Hay una función para esto en PHP. consulta_mysql(). Su argumento: una cadena de consulta. La función devuelve el ID de la solicitud.

    Ejemplo 1

    Agregar una entrada a una tabla

    Cada vez que se ejecute el Ejemplo 1, se agregará un nuevo registro a la tabla que contiene los mismos datos. Por supuesto, tiene sentido agregar datos ingresados ​​por el usuario a la base de datos.

    El ejemplo 2.1 muestra un formulario HTML para agregar libros nuevos a la base de datos.

    Ejemplo 2.1

    Formulario HTML para agregar nuevos libros.
    ISBN
    Autor
    Nombre
    Precio
    Cantidad


    Los resultados de completar este formulario se envían a insert_book.php.

    Ejemplo 2.2

    Programa para agregar nuevos libros (archivo insert_book.php) Por favor regrese y termine de escribir"); ) $isbn = trim ($_POST["isbn"]); $author = trim ($_POST["author"]); $title = trim ($_POST["title" ] ) ; $isbn = addlashes ($isbn); $title = addlashes ($title); $db = "muestra"; $link = mysql_connect(); ("No se puede conectar a MySQL"); o morir ("No se puede abrir $db"); $query = "INSERT INTO books VALUES ("" .$isbn.", "".$author. "", "".$title.", "" .floatval($_POST["precio"]).", "".intval($_POST["cantidad"])."")"; $resultado = mysql_query ($consulta); el libro ha sido agregado a la base de datos."; mysql_close ($link ?>);

    En el ejemplo 2.2, los datos de cadena ingresados ​​son procesados ​​por la función agrega pestañas(). Esta función agrega barras invertidas antes de comillas simples ("), comillas dobles ("), barra invertida (\) y bytes nulos. El hecho es que, de acuerdo con los requisitos del sistema de consulta de la base de datos, dichos símbolos deben estar entre comillas.

    Para determinar el número de registros como resultado de una consulta, utilice la función mysql_num_rows().

    Todos los registros de resultados de la consulta se pueden ver en un bucle. Antes de hacer esto, usando la función mysql_fetch_ Para cada registro se obtiene una matriz asociativa.

    El ejemplo 3.1 muestra un formulario HTML para buscar libros específicos en una base de datos.

    Ejemplo 3.1

    Formulario de búsqueda de libros HTML
    Buscando por:

    Qué estamos buscando:



    Los resultados de completar este formulario se envían a search_book.php.

    Ejemplo 3.2

    Vuelva atrás y termine de escribir"); $searchterm = addlashes ($searchterm); $link = mysql_pconnect(); if (!$link) die("No se puede conectar a MySQL"); $db = "sample"; mysql_select_db ($db) o die("No se puede abrir $db"); $query = "SELECCIONAR * DE libros DONDE " .$_POST["tipo de búsqueda"]." como "%".$término de búsqueda."%""; $resultado = mysql_query ($consulta); $n = mysql_num_rows ($resultado); para ($i=0; $i<$n; $i++) { $row = mysql_fetch_array($result); echo "

    ".($i+1). $fila["título"]. "



    "; ) if ($n == 0) echo "No tenemos nada que ofrecer. Lo siento"; mysql_close($enlace); ?>

    Opción alternativa

    Programa de búsqueda de libros (archivo search_book.php) Vuelva atrás y termine de escribir"); $searchterm = addlashes ($searchterm); mysql_connect() o morir ("No se puede conectar a MySQL"); mysql_select_db ("muestra") o morir ("No se puede abrir la base de datos") ; $ resultado = mysql_query("SELECT * FROM books WHERE ".$_POST["searchtype"].." como "%".$searchterm."%""); while($row = mysql_fetch_array($resultado) ) ( eco "

    ".($i++). $fila["título"]."
    "; echo "Autor: ".$fila["autor"]."
    "; echo "ISBN: ".$fila["ISBN"]."
    "; echo "Precio: ".$fila["precio"]."
    "; echo "Cantidad: ".$fila["cantidad"]."

    "; ) if ($i == 1) echo "No tenemos nada que ofrecer. Lo siento"; mysql_close(); ?>

    Entonces, ¿cómo funciona la arquitectura de la base de datos web?

    1. El navegador web del usuario emite una solicitud HTTP para una página web específica.
    2. Por ejemplo, un usuario que utiliza un formulario HTML busca todos los libros sobre PHP. La página de procesamiento del formulario se llama search_book.php.
    3. El servidor web recibe una solicitud de search_book.php, recupera este archivo y lo pasa al motor PHP para su procesamiento.
    4. PHP se conecta al servidor MySQL y envía la solicitud.
    5. El servidor acepta una solicitud de base de datos, la procesa y envía el resultado (una lista de libros) al motor PHP.
    6. El motor PHP termina de ejecutar el script y formatea el resultado de la solicitud en HTML. Después de esto, el resultado en formato HTML se devuelve al servidor web.

    El servidor web reenvía el HTML al navegador y el usuario puede ver la lista de libros solicitada.

    Usando el mecanismo de transacción

    Usar el mecanismo de transacción como ejemplo de cómo transferir dinero de una persona a otra

    If(mysql_query ("COMENZAR") && mysql_query ("ACTUALIZAR dinero SET amt = amt - 6 DONDE nombre = "Eva"") && mysql_query ("ACTUALIZAR dinero SET amt = amt + 6 DONDE nombre = "Ida"") && mysql_query ("COMMIT"))( echo "Exitoso"; )else( mysql_query ("ROLLBACK"); echo "No exitoso"; )

    Si ejecuta varios procesos que realizan consultas de selección en la misma tabla, es posible que seleccionen el mismo registro al mismo tiempo.

    Para evitar la situación anterior, es necesario ejecutar no solo una consulta SELECT, sino su versión extendida, que muchos ni siquiera conocen: SELECT... FOR UPDATE.

    Así, al ejecutar esta consulta, todos los registros afectados en la base de datos quedarán bloqueados hasta que se complete la sesión con la base de datos o hasta que se actualicen los datos del registro.

    Otro script no podrá seleccionar registros bloqueados hasta que ocurra una de las condiciones mencionadas.



    
    Arriba