=====
PHP 7
=====
.. image:: /logos/logo-php.png
:scale: 15%
:alt: Logo PHP
:align: center
.. |date| date::
.. |time| date:: %H:%M
Última edición el día |date| a las |time|.
Esta es la documentación que he recopilado para trabajar con PHP 7, el lenguaje de la web y uno de los mas usados para desarrollo backend.
.. contents:: Índice
Elementos básicos del lenguaje
##############################
Comentarios
***********
Los comentarios se pueden realizar de dos tipos:
* Comentarios de una sola línea:
.. code:: php
// Comentario de una sola línea
* Comentarios multilínea:
.. code:: php
'''
/* Este comentario
tiene más de una línea.
Puede servir para escribir
un manual u otras cosas.
*/
'''
Estructura en php
******************
La estructura de PHP 7 se presenta de un modo similar a lenguajes como C o Perl:
* Un vistazo a PHP puro:
.. code:: php
// el código php se inicia siempre con su simbolo menor que interrogación y php:
// y finaliza del mismo modo
* Ejecutando código php junto a HTML:
.. code:: php
* También podemos cargar etiquetas HTML con PHP:
.. code:: php
Etiqueta incrustada desde php";
?>
Otro dato importante como en la mayoría de lenguajes hay que evitar la ausencia de ; ya que en algunos casos no da error pero en otros si.
.. attention::
Para cargar los archivos PHP correctamente desde el navegador deben estar alojados en la carpeta del directorio web.
Extensión
*********
La extensión utilizada por los archivos php es ``php``
Ejecución
*********
Existen dos métodos para ejecutar código PHP:
* El primero y mas común es cargar el archivo desde la url en el servidor local o remoto.
* El segundo es ejecutandolo desde PHP-CLI, por ejemplo: ``php hola.php``. Muy útil para probar partes del código.
.. important::
Para utilizar PHP-CLI tenemos que instalarlo ejecutando ``sudo apt install php7.4-cli``
Información de nuestro servidor
*******************************
Si queremos conocer la información de nuestro servidor basta con crearnos un archivo con el nombre por ejemplo info.php y añadir la siguiente función:
.. code:: php
Abrimos el archivo en el navegador desde el servidor y se mostrará toda la info de este.
Documentación de PHP oficial
****************************
La documentación oficial de php nos brinda cientos de funciones que pueden ayudarnos en nuestro día a dia.
Podemos acceder en el siguiente `enlace `_.
Palabras reservadas de PHP 7
*****************************
En php existen las siguientes palabras reservadas:
* __halt_compiler()
* abstract
* and
* array()
* as
* break
* callable
* clase
* catch
* class
* clone
* const
* continue
* declare
* default
* die()
* do
* echo
* else
* elseif
* empty()
* enddeclare
* endfor
* endforeach
* endif
* endswitch
* endwhile
* eval()
* exit()
* extends
* final
* finally
* for
* foreach
* function
* global
* goto
* if
* implements
* include
* include_once
* instanceof
* insteadof
* interface
* isset()
* list()
* namespace
* new
* or
* print
* private
* protected
* public
* require
* require_once
* return
* static
* switch
* throw
* trait
* try
* unset()
* use
* var
* while
* xor
* yield
* yield from
Variables y tipos de datos
##########################
Variables
*********
Las variables se definen de forma similar a Perl, con una llave inicial.
Ejemplo:
.. code:: php
.. attention::
Es imprescindible almacenar contenido en las variables para que no genere errores. Por ejemplo poner unas comillas "".
Constantes
**********
Para definir constantes tenemos que recurrir a una función llamada define()
Ejemplo:
.. code:: php
Tipos de datos primitivos
*************************
Los tipos de datos mas comunes son los siguientes:
+------------------+-----------------------------------------------+-----------------------------+
| Tipo de dato | Denominación | Ejemplo |
+==================+===============================================+=============================+
| string | Cadena de texto | 'cadena', "cadena" |
+------------------+-----------------------------------------------+-----------------------------+
| integer | Número Entero | 20, 5, -3, 0 |
+------------------+-----------------------------------------------+-----------------------------+
| float | Número con decimales | 20.53, 12.5, -18.353 |
+------------------+-----------------------------------------------+-----------------------------+
| bool | Verdadero o falso | true, false |
+------------------+-----------------------------------------------+-----------------------------+
| array | Matriz de datos | array('valor', 'otro_valor')|
+------------------+-----------------------------------------------+-----------------------------+
| array asociativo | Objeto con orden de tipo clave:valor | array('clave' => 'valor') |
+------------------+-----------------------------------------------+-----------------------------+
Ejemplos:
.. code:: php
$cadena = "Dia de paga"
$otraCadena = 'Cadena de comillas simples es lo mismo'
$entero = 27
$decimal = 22.83
$booleano = true
$array = array(2.4, true, 6, 'Metro');
$array_asociativo = array(
'nombre' => 'Guillermo',
'apellidos' => 'Granados Gómez',
'telefono' => '744607487',
'ciudad' => 'Málaga'
);
Entrada y Salida de datos
#########################
Para realizar la entrada de datos en PHP al ser un lenguaje definido para web se utilizan formularios y se realiza mediante POST:
* Entrada de datos:
.. code:: php
* Salida de datos:
.. code:: php
Luego para concatenar utilizamos el ``.`` en cada elemento:
.. code:: php
Operadores
##########
Operadores Aritméticos
**********************
Los operadores aritméticos que se presentan en php son los mismos que en la mayoría de lenguajes,
``+, -, *, /, %``
Estos podemos utilizarlos del siguiente modo:
.. code:: php
Operadores Relacionales
***********************
Los operadores relacionales en php son los mismos que en la mayoría de lenguajes de programación:
+-----------------+---------+
| Operador | símbolo |
+=================+=========+
| Mayor que | > |
+-----------------+---------+
| Menor que | < |
+-----------------+---------+
| Igual que | == |
+-----------------+---------+
| Mayor igual que | >= |
+-----------------+---------+
| Menor igual que | <= |
+-----------------+---------+
Cuando hablamos del uso de un solo ``=`` nos referimos a la asignación de un valor en una variable.
Como en muchos lenguajes, si imprimimos por consola la relación entre un valor y otro el resultado será True o False:
.. code:: php
Operadores Lógicos
******************
En php se utilizan los mismos operadores lógicos que en la mayoría de lenguajes de programación, sin embargo presentan un aspecto diferente:
+-----------+-----------+------------------------------------------------------------+
| Operador | símbolo | condición |
+===========+===========+============================================================+
| Y (and) | && | La condición se cumple si todos son verdaderos |
+-----------+-----------+------------------------------------------------------------+
| O (or) | || | La condición se cumple si al menos uno es verdadero |
+-----------+-----------+------------------------------------------------------------+
| NO (not) | ! | La condición se cumple si es diferente a lo que se compara |
+-----------+-----------+------------------------------------------------------------+
Ejemplos:
.. code:: php
# Resultado False:
print(5 > 7 && 3 < 6)
# Resultado True:
print(5 > 7 || 3 < 6)
# Resultado True
print(6 != 3)
Asignación
**********
Nos permiten asignar datos a variables. Esto ya lo hemos visto también en ejemplos anteriores:
.. code:: php
Con este último operaremos con el valor asignado sumando, restando, multiplicando o dividiendo el valor que ya posee.
Estructuras de control
######################
En php disponemos de estructuras de control como ``if``, ``switch``, ``for`` y ``while``.
Condicional if
**************
Las condiciones sencillas en php funcionan del siguiente modo:
.. code:: php
También tenemos condiciones con una salida alternativa si no se cumple esta:
.. code:: php
Condicional if-else if
**********************
Las condiciones compuestas nos ofrecen varios caminos posibles:
.. code:: php
$edad = 66:
if($edad >= 18){
echo 'Eres mayor de edad';
}else if($edad < 18){
echo 'Eres menor de edad';
}else if($edad >= 65){
echo 'Ya eres un anciano';
}else{
echo 'No es una edad correcta';
Condicional Switch
******************
El switch podemos utilizarlo para tomar distintos caminos fijos. Se utiliza a menudo en PHP.
.. code:: php
Bucle for
*********
El bucle for en php se presenta de un modo muy similar al de lenguajes como Javascript o Perl:
* Uso con rango definido:
.. code:: php
* Bucle for multidimensional:
.. code:: php
";
for($i = 0; $i <= 10; $i++){
echo " ";
for($j = 0; $j <= 10; $j++){
echo "" . $i . " | ";
}
echo "
";
}
echo "";
?>
Bucle foreach
*************
El bucle diseñado para iterar con matrices de datos en PHP, el cual es similar a for-in que se utiliza en Python o Javascript:
.. code:: php
";
}
?>
Bucle while
***********
El bucle While es similar a Perl o Javascript entro otros.
* Ejemplo de bucle while:
.. code:: php
* Bucle do-while:
.. code:: php
Estructuras de datos
####################
Matrices
********
Las matrices o arrays en PHP son bastante útiles para organizar datos.
.. code:: php
* Recorrer valores de una matriz e imprimirlos con ``for``:
.. code:: php
";
for($i = 0; $i <= 3; $i++){
echo "- " . $transporte[$i] . "
";
}
?>
* Ver cuantos elementos hay en una lista con ``count()``:
.. code:: php
* Imprime un elemento de la lista por su posición:
.. code:: php
* Borra el último elemento de la lista con ``array_pop()``:
.. code:: php
* Borrar un elemento por su posición con ``unset()``:
.. code:: php
* Añadir un elemento al final de la lista con ``array_push()``:
.. code:: php
* Convertir lista a cadena de texto con ``implode()``:
.. code:: php
* Ordenar elementos de listas por orden numérico o alfabético:
.. code:: php
* Verificar si se encuentra un elemento en la lista y devuelve true o false:
.. code:: php
Array Asociativos
*****************
Los arrays asociativos vienen a ser lo mismo que los diccionarios en Python o los Objetos en Javascript.
Se construye por pares de datos que son clave y valor del mismo modo que en Python o Javascript.
Ejemplo de uso:
.. code:: php
"Guillermo",
"ciudad" => "Málaga"
);
?>
* Imprimir un valor del diccionario:
.. code:: php
* Ver la estructura del array con ``print_r()``:
.. code:: php
* Recuperar solo las claves del diccionario con ``array_keys()``:
.. code:: php
* Recorrer e imprimir todos los elementos del array asociativo:
.. code:: php
* Recorrer e imprimir todos los elementos por clave => valor:
.. code:: php
$valor){
echo $clave . ": " . $valor . "\n";
}
?>
Arrays asociativos multidimensionales
#####################################
Los arrays asociativos multidimensionales son similares a arrays de objetos o listas de diccionarios según que lenguaje.
* Añadiendo los valores de forma manual:
.. code::
* Añadiendo los valores de forma masiva:
.. code:: php
array(
'nombre' => "Eduardo",
'apellidos' => "Lopez Aguirre",
'telefono' => "667248135",
'ciudad' => "Sevilla"
),
1 => array(
'nombre' => "Antonia",
'apellidos' => "Martinez Santos",
'telefono' => "67748970",
'ciudad' => "Cádiz"
),
2 => array(
'nombre' => "Enrique",
'apellidos' => "Casas Nuñez",
'telefono' => "609752147",
'ciudad' => "Madrid"
)
);
// Del mismo modo podemos imprimir los valores:
echo "Me llamo " . $datos[2]['nombre'] . " " . $datos[2]['apellidos'] . " soy de " . $datos[2]['ciudad'] . " y mi número de teléfono es: " . $datos[2]['telefono'];
?>
Recorrer array multidimensional asociativo con foreach
******************************************************
Gracias al uso del **foreach** nuestro trabajo siempre será mas sencillo aunque se trate de un array multidimensional:
.. code:: php
array(
'nombre' => "Eduardo",
'apellidos' => "Lopez Aguirre",
'telefono' => "667248135",
'ciudad' => "Sevilla"
),
1 => array(
'nombre' => "Antonia",
'apellidos' => "Martinez Santos",
'telefono' => "67748970",
'ciudad' => "Cádiz"
),
2 => array(
'nombre' => "Enrique",
'apellidos' => "Casas Nuñez",
'telefono' => "609752147",
'ciudad' => "Madrid"
)
);
echo "";
echo "
Nombre |
Apellidos |
Teléfono |
Ciudad |
";
// Con foreach ya no es necesario pasarle una variable de incremento al índice porque el bucle ya recorre todo el array horizontal y verticalmente.
foreach($datos as $listado){
echo "";
echo "" . $listado['nombre'] . " | ";
echo "" . $listado['apellidos'] . " | ";
echo "" . $listado['telefono'] . " | ";
echo "" . $listado['ciudad'] . " | ";
echo "
";
}
echo "
";
?>
Funciones Internas
##################
Como en la mayoría de lenguajes de programación, en php existen funciones predefinidas.
Funciones de cadenas
********************
Aquí tenemos las funciones mas utilizadas para tratamiento de cadenas de texto:
* Para saber la longitud de una cadena con ``strlen()``:
.. code:: php
* Convertir valor numérico a cadena con ``(String)``:
.. code:: php
* Convertir una cadena en una lista ``explode()``:
.. code:: php
* Reemplazar una cadena por otra con ``str_replace()``:
.. code:: php
* Convertir a mayúsculas la cadena con ``strtoupper()``:
.. code:: php
* Convertir a minúsculas la cadena con ``strtolower()``:
.. code:: php
Funciones numéricas
*******************
Estas son las funciones numéricas mas comunes en php:
* Convertir un valor a entero con ``(int)``:
.. code:: php
* Convertir un valor a decimal con ``(float)``:
.. code:: php
* Redondear un valor decimal con ``round()``:
.. code:: php
* Crear un rango de números con ``range()``:
.. code:: php
* Mostrar el valor mayor de un rango con ``max()``:
.. code:: php
* Mostrar el valor mínimo de un rango con ``min()``:
.. code:: php
* Sumar todos los valores de un rango con ``array_sum()``:
.. code:: php
Otras funciones comunes
***********************
Tenemos una serie de funciones de uso común en php:
* Averiguar que tipo de dato contiene una variable con ``gettype()``:
.. code:: php
* Trabajar las fechas con la función ``date()``:
.. code:: php
";
echo "Inicial del día: " . date('D') . "
";
echo "Día de la semana: " . date('l') . "
";
echo "Días transcurridos desde que comenzó el año: " . date('z') . "
";
echo "Semanas transcurridas desde que comenzó el año: " . date('W') . "
";
echo "Mes en el que estoy: " . date('m') . "
";
echo "Mes en el que estoy sin cero: " . date('n') . "
";
echo "Iniciales del mes el que estoy sin cero: " . date('M') . "
";
echo "Dias que tiene el mes en el que estoy: " . date('t') . "
";
echo "Año en el que estoy: " . date('Y') . "
";
echo "Año abreviado: " . date('y') . "
";
// Si nos da 0 es false y si da 1 es true:
echo "Saber si es año bisiesto: " . date('L') . "
";
echo "Fecha formato ISO-8601: " . date('c') . "
";
// Este formato es ideal para almacenar fechas en bases de datos:
echo "Hora UNIX: " . date('U') . "
";
// AJUSTES DE TIEMPO:
echo "Hora AM o PM: " . date('a') . "
";
echo "Hora AM o PM en mayúsculas: " . date('A') . "
";
echo "Hora en formato Swatch Internet Time : " . date('B') . "
";
echo "Hora en formato 12: " . date('g') . "
";
echo "Hora en formato 24: " . date('G') . "
";
echo "Hora formato 12 con 0 inicial: " . date('h') . "
";
echo "Hora formato 24 con 0 inicial: " . date('H') . "
";
echo "Minutos con cero: " . date('i') . "
";
echo "Segundos con ceros: " . date('s') . "
";
echo "Microsengundos: " . date('u') . "
";
echo "Zona temporal: " . date('e') . "
";
// 0 false, 1 true:
echo "Horario de sol reducido: " . date('I') . "
";
echo "Desfase frente al meridiano de Greenwitch: " . date('O') . "
";
?>
* Comprobar si existe una variable con ``isset()`` y eliminarla con ``unset()``:
.. code:: php
";
unset($valor);
if(isset($valor)){
echo "La variable tiene un valor igual a " . $valor . "
";
}else{
echo "Ya no tiene ningún valor";
}
?>
Funciones
#########
Las funciones en php se declaran del siguiente modo:
.. code:: php
* Recibir parametros en una función:
.. code:: php
";
}
}
tablas(5);
?>
Ambito en funciones
********************
El ambito de las funciones en php nos facilita el uso de variables que se encuentran fuera de una función
para poder manejarlas sin tener que pasarlas por parámetros.
ejemplo:
.. code:: php
* Recibir parametros infinitos añadiendo ``*`` a un parametro:
.. code:: php
def miFuncion(*unNombre):
for persona in unNombre:
print("Se llama {}".format(persona))
miFuncion("Pepe", "Antonio", "Alfredo")
Variables predefinidas
######################
PHP cuenta con un set de variables predefinidas disponibles en cualquier parte del programa para tratar distintos aspectos
como peticiones GET y POST, recuperar archivos con FILES, etc.
Variable GET
************
Con **$_GET** Recuperamos la información recibida por parametros en la barra de navegación. Esto muestra la información
que recibimos como ya es de saber:
.. code:: php
Variable POST
*************
Podemos enviar los datos via post y utilizar la variable **$_POST** para recuperarlos:
.. code:: php
Variable SERVER
***************
Con la variable **$_SERVER** podemos recuperar información de quien visita la web.
Estas son algunas de las cosas que podemos recuperar:
.. code:: php
";
// Para saber el puerto que esta usando el cliente:
$puerto = $_SERVER['REMOTE_PORT'];
echo "Estas usando el puerto: " . $puerto . "
";
// Para saber la ip del servidor:
$serverIP = $_SERVER['SERVER_ADDR'];
echo "La ip del servidor es: " . $serverIP . "
";
// Para saber el nombre del Servidor (por defecto la ip de este si no tiene nombre definido):
$host = $_SERVER['SERVER_NAME'];
echo "El nombre del servidor es: " . $host . "
";
//Para saber el navegador:
$navegador = $_SERVER['HTTP_USER_AGENT'];
echo "Tu navegador es: " . $navegador . "
";
//Para saber el archivo donde te encuentras de la web:
$ruta = $_SERVER['PHP_SELF'];
echo "Estas en: " . $ruta . "
";
//El metodo con el que se esta procesando la url:
$metodo = $_SERVER['REQUEST_METHOD'];
echo "Se esta usando el Método: " . $metodo . "
";
//Ver la url que se utilizo para realizar la petición:
$uri = $_SERVER['REQUEST_URI'];
echo "Se esta usando el Método: " . $uri . "
";
//Visualizar la raiz del directorio donde se encuentra el archivo:
$raiz = $_SERVER['DOCUMENT_ROOT'];
echo "La raiz del servidor es: " . $raiz . "
";
//Ofrece un valor no vacío si la petición se realiza en https:
$peticion_segura = $_SERVER['HTTPS'];
echo "Se vera algo si estamos usando https: " . $peticion_segura . "
";
?>
Variable FILES
**************
La variable **$_FILES** recupera un archivo subido desde un formulario.
Ejemplo de uso:
.. code:: php
";
print_r($_FILES['archivo']);
echo "";
?>
Variable SESSION
****************
La variable **$_SESSION** se utiliza para recordar datos en el navegador del cliente
como usuarios, procesos de compras y otras cosas.
Ejemplo de uso:
.. code:: php
Clases
######
PHP se ha ido adaptando al paso del tiempo desde su propósito inicial como lenguaje de servidor hasta llegar a alcanzar una sintaxis muy parecida a otros lenguajes de alto nivel.
Entre estas mejoras ya disponemos del paradigma orientado a objetos.
* Creación de clases con atributos, metodo y creación del objeto:
.. code:: php
nombre = $nombre;
$this->edad = $edad;
}
// Y definimos abajo los métodos:
function saludar(){
echo "Te llamas " . $this->nombre . " y tienes " . $this->edad . " años.";
}
}
// crear objeto:
$persona = new Persona("Agustín", 32);
// acceder a sus atributos:
echo $persona->nombre . "\n";
// acceder a sus métodos
$persona->saludar();
?>
.. important::
Los atributos siempre tienen que llevar un modificador de acceso como public o private o protected pero los metodos si no
lo definimos por defecto son public.
Tipos de encapsulación en PHP
*****************************
Existen tres tipos de encapsulación en PHP:
* public: los atributos y métodos son publicos y por tanto se puede acceder a ellos una vez creado el objeto.
* private: los atributos y metodos no pueden ser llamados o modificados desde el objeto.
* protected: los atributos y metodos solo pueden ser llamados o modificados desde la clase.
Get y Set
*********
Cuando manejamos atributos y métodos privados lo que utilizamos para ver o modificar estos es una convención
llamada getter y setter la cual se basa en la creación de metodos públicos que sirven solo para esos fines.
.. code:: php
nombre = $nombre;
$this->edad = $edad;
}
function saludar(){
echo "Te llamas " . $this->nombre . " y tienes " . $this->edad . " años.";
}
// para acceder a los métodos ahora usamos get:
function get_nombre(){
return $this->nombre;
}
function get_edad(){
return $this->edad;
}
// para modificar los atributos usamos set:
function set_nombre($nombre){
$this->nombre = $nombre;
echo "Se ha cambiado el nombre por " . $this->nombre . "\n";
}
function set_edad($edad){
$this->edad = $edad;
echo "Se ha cambiado la edad por " . $this->edad . "\n";
}
// a este método no se puede acceder desde el objeto:
private function ver_clave(){
echo "La clave es: " . $this->clave;
}
// para ello usaremos un get:
function get_clave(){
$this->ver_clave();
}
}
$persona = new Persona("Agustín", 32);
// Ver los atributos:
echo $persona->get_nombre();
echo "\n";
echo $persona->get_edad();
echo "\n";
// modificar los atributos:
$persona->set_nombre("Paquito");
$persona->set_edad(47);
// para ejecutar un metodo privado usamos un get:
$persona->get_clave();
?>
.. important::
tanto Get como Set son convenciones para definir estos métodos de acceso a atributos y metodos privados pero
en realidad son metodos normales.
Herencia
********
La herencia en PHP es similar a lenguajes como Java o C#:
.. code:: php
especie = $especie;
$this->edad = $edad;
}
function info(){
echo "Nuestro animal es un " . $this->especie . " y tiene " . $this->edad . " años \n";
}
}
// ahora creamos una clase hijo:
class Humano extends Animal{
// el hijo tiene sus atributos y metodos:
public $nombre;
function __construct($nombre, $edad){
$this->nombre = $nombre;
// pero también tenemos los metodos y atributos del padre:
$this->especie = "Humano";
$this->edad = $edad;
}
function saludo(){
echo "Me llamo " . $this->nombre . " y tengo " . $this->edad . " años.\n";
}
}
// con el padre tenemos una serie de atributos y métodos:
$animal = new Animal("León", 7);
$animal->info();
// que con el hijo podemos utilizar:
$humano = new Humano("Paco", 27);
// podemos usar sus propios metodos:
$humano->saludo();
// y podemos llamar a metodos del padre en el hijo:
$humano->info();
?>
.. important::
En la herencia de clases existe otro concepto llamado polimorfismo y se basa en reutilizar los metodos de las clases padre para modificarlos en las clases hijo de forma que
podemos reutilizarlos sin necesidad de crear unos nuevos.
Atributos y Métodos estáticos
*****************************
Los atributos y métodos estáticos en PHP son aquellos que se pueden acceder sin crear un objeto fuera de la clase con el uso de **::**.
Estos métodos llevan un segundo modificador llamado ``static`` justo después de ``public``:
.. code::
Manejor de archivos
###################
En php podemos crear y modificar archivos con la función ``fopen()``:
Cuando abrimos un archivo en php siempre asignamos un permiso:
+---------------+--------------+
| Permiso | Nomenclatura |
+===============+==============+
| Escritura | w - w+ |
+---------------+--------------+
| Lectura | r - r+ |
+---------------+--------------+
| Actualización | a - a+ |
+---------------+--------------+
* En el caso de escritura:
.. code:: php
* En caso de lectura:
.. code:: php
";
print_r($datos);
echo "";
}
fclose($manejador);
?>
* En caso de actualización:
.. code:: php
Conectar a bases de datos con PDO
#################################
PDO (PHP Data Objects) sirve para conectarse a gran cantidad de bases de datos con el mismo código ya sea MySQL, SQL Server o PostgreSQL entre otras.
* Conexión a base de datos MySQL:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "Conexión realizada con éxito";
// para cerrar la conexión:
$conn = null;
?>
* Crear una base de datos:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// preparamos la consulta:
$sql = "CREATE DATABASE pruebaSQL";
// realizamos la consulta:
$conn->exec($sql);
echo "Base de datos creada con éxito";
$conn = null;
?>
* Crear una tabla:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "CREATE TABLE agenda(
id INT(10) AUTO_INCREMENT PRIMARY KEY,
nombre VARCHAR(30) NOT NULL,
edad INT(10) NOT NULL
)";
$conn->exec($sql);
echo "Tabla creada con éxito";
$conn = null;
?>
* Agregar registros a la tabla:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "INSERT INTO agenda (nombre, edad) values ('Alfredo', 30)";
$conn->exec($sql);
echo "Inserción realizada con éxito";
$conn = null;
?>
* Hacer varias inserciones separando los parámetros:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Preparar consulta para separar parametros:
$sql = $conn->prepare("INSERT INTO agenda (nombre, edad) VALUES (:nombre, :edad)");
// preparar parametros:
$sql->bindParam(':nombre', $nombre);
$sql->bindParam(':edad', $edad);
// insertar mas de un registro a la vez:
$nombre = "Antonio";
$edad = 38;
$sql->execute();
$nombre = "Eustaquia";
$edad = 73;
$sql->execute();
echo "Inserciones realizadas correctamente";
$conn = null;
?>
* Leer registros de la tabla:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Preparar consulta y ejecutar directamente:
$sql = $conn->query("SELECT * FROM agenda")->fetchAll();
// Recorrer todos los datos:
foreach($sql as $data){
echo "- " . $data['nombre'] . "\n";
}
$conn = null;
?>
* Borrar registros de la tabla:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Preparar consulta:
$sql = "DELETE FROM agenda WHERE id=1";
// ejecutar consulta:
$conn->exec($sql);
echo "Registro eliminado";
$con = null;
?>
* Actualizar registros de la tabla:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
// Preparar consulta:
$sql = "UPDATE agenda SET nombre='Elvira', edad=32 WHERE id=2";
// preparar estado:
$stmt = $conn->prepare($sql);
// ejecutar consulta:
$stmt->execute();
echo "Registro actualizado";
$con = null;
?>
PDO y SQLite 3
**************
Podríamos trabajar perfectamente SQLite 3 con PDO pero para ello antes tenemos que asegurarnos de dos cosas:
* Primero tenemos que instalar sqlite3 en nuestro sistema: ``sudo apt install php7.4-sqlite3``
* Luego localizamos el archivo **php.ini** que suele estar en **/etc/php/7.4/ y dentro de las carpetas **apache2** y **cli** encontraremos estos archivos.
* Editamos y buscamos las líneas que ponen ``;extension=pdo_sqlite`` y ``;extension=sqlite`` si tienen un **;** lo quitamos para habilitarlas.
* Conectar a una base de datos SQLite 3:
.. code:: php
setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$db->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_OBJ);
echo "Conexión realizada con éxito";
$con = null;
?>
PHP CLI
#######
Comandos útiles de PHP:
* php -v: podemos ver la versión que usamos
* php -m: podemos ver los moudlos cargados
* php -i: podemos ver la configuración de php actual
* php -r: enviar código a ejecutar ej: ``echo "hola mundo"``
* php archivo.php: podemos ejecutar un archivo php para ver en que ámbito se ha ejecutado.
* php -S: ejecutar servidor php ``php -S localhost:8000``
* php -S -t: establecer un directorio inicial de arrance del server: ``php -S localhost:8000 -t inicial/``