Download PHP: Acceso a Bases de Datos

Document related concepts
Transcript
PHP: Acceso a Bases de
Datos
CI-2413
PHP: Bases de datos
PHP permite el acceso a las siguientes
bases de datos:
dbase
dbm
db++
FrontBase
filePro
Informix
InterBase
Ingres II
SQL Server
mSQL
Mysql
Oracle
Ovrimos SQL Server
PostgreSQL
SESAM
Sybase
PHP: Bases de datos
PHP también tiene interfaces abstractas:
DBA (DataBase Abstraction)
DBX
ODBC
Recientemente también:
PHP Data Objects Interface
PHP: Bases de datos
Además podemos encontrar bibliotecas
que tienen una interfaz de abstracción OO
de bases de datos:
PHPlib
(http://www.sanisoft.com/phplib/manual/)
ADODB (http://php.weblogs.com/ADODB)
PEAR (http://pear.php.net)
PHP: MySQL
MySQL es un sistema de bases de datos
desarrollado por la empresa MySQL AB.
Tal empresa desarrolla las nuevas
versiones y provee servicios como apoyo
técnico. El sistema de bases de datos se
da bajo licencia GPL que es una licencia
de software libre o se vende bajo una
licencia comercial.
PHP: Funciones MySQL
Conexión al servidor:
int mysql_connect ( [string server [, string
usuario [, string password]]])
Ejemplo:
<?php
$link = mysql_connect ("titanic", "root", “ci2413")
or die ("Could not connect");
print ("Connected successfully");
mysql_close ($link);
?>
PHP: Funciones MySQL
Desconexión del servidor:
int mysql_close ( [int identificador_de_enlace])
Ejemplo:
Ver el ejemplo anterior…
PHP: Funciones MySQL
Selección de una base de datos:
int mysql_select_db ( string base_de_datos [,
int identificador_de_enlace])
Ejemplo:
…
$bd = mysql_select_db("contaduria");
…
PHP: Funciones MySQL
Envío de una consulta:
int mysql_query ( string sentencia [, int
identificador_de_enlace])
Ejemplo:
<?php
$result = mysql_query ("SELECT * WHERE 1=1")
or die (“¡Consulta inválida!");
?>
PHP: Funciones MySQL
 Desplegando los resultados:
 object mysql_fetch_object ( int id_resultado [, int
tipo_de_resultado])
 Ejemplo:
<?php
mysql_connect($servidor,$usuario,$clave);
mysql_select_db("base");
$resultado = mysql_query("select * from tabla");
while($fila = mysql_fetch_object($resultado)) {
echo $fila->id_usuario;
echo $fila->nombre;
}
mysql_free_result($resultado);
?>
PHP: MySQLi
 Funciona con PHP 4.1.3 y superior. Para tener
la funcionalidad se debe compilar PHP con
apoyo para la extensión mysqli.
PHP: MySQLi (Clases)
 mysqli
Constructor
 mysqli
Métodos
 autocommit
 change_user
 character_set_name
 close
 commit
 connect
 debug
 dump_debug_info
 get_client_info
 get_host_info
 get_server_info
 init
 info
 kill
 multi_query
 more_results
 next_results
 options
 ping
PHP: MySQLi (Clases)
 prepare
 query
 real_connect
 escape_string
 rollback
 select_db
 ssl_set
 stat
 stmt_init
 store_results
 use_results
 thread_safe
Propiedades
 affected_rows
 client_info
 client_version
 errno
 error
 field_count
 host_info
 info
 insert_id
 protocol_version
 sql_state
 thread_id
 warning_count
PHP: MySQLi (Clases)
 mysqli_stmt
Métodos
 bind_param
 bind_result
 close
 data_seek
 execute
 fetch
 free_result
 result_metadata
 prepare
 send_long_data
 reset
 store_results
Propiedades
 affected_rows
 errno
 param_count
 sqlstate
PHP: MySQLi (Clases)
 mysqli_result
Métodos
 close
 data_seek
 fetch_fields
 fetch_field_direct
 fetch_array
 fetch_assoc
 fetch_object
 fetch_row
 close
 field_seek
Propiedades
 current_field
 field_count
 lengths
 num_rows
PHP: PostgreSQL
 La base de datos PostgreSQL es un producto de
Código Abierto. Postgres, desarrollada
originalmente en el Departamento de Ciencias de la
Computación de la Universidad de Berkeley, fue
pionera de muchos de los conceptos objetorelacionales ahora disponibles en algunas bases de
datos comerciales. Provee apoyo a SQL92/SQL99,
transacciones, integridad referencial,
procedimientos almacenados y extendibilidad de
tipo. PostgreSQL es un descendiente de código
abierto del código original de Berkeley.
PHP: ¡Problemas!
Escalabilidad
Mantenimiento
Portabilidad
PHP: Solución
 La solución para resolver los problemas
anteriores, es separar nuestro diseño en capas:
Abstracción de Base de Datos
Lógica PHP
Despliegue (en formato HTML)
 Varias herramientas permiten hacer esta
separación, por ejemplo: ADODB y Smarty
(Plantillas, las veremos después). Además la
utilización de clases nos hará la vida fácil.
PHP: Solución
Leer el artículo Building Database
Interfaces en
http://www.zend.com/zend/tut/tutorialwong4.php.
Leer el tutorial en español de ADODB en
http://www.codigophp.com/arts/adodb.html
.