Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Cree Full API-rest Con Pdo - PHP 7

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 10

557621783.

docx [Escriba aquí] 1 de 10

Cree PHP 7 | 8 CRUD REST API simple con MySQL y PHP PDO
Ultima actualización en 27 de noviembre de 2020 por Digamber
Este es un tutorial paso a paso de la API REST de PHP 7 y MySQL. En este tutorial voy a compartir contigo cómo crear
una API RESTful PHP 7 CRUD (Crear, Leer, Actualizar, Eliminar) con una base de datos MySQL.
Si aspira a tener una comprensión fundamental de los frameworks PHP, entonces debe consultar nuestro tutorial
anterior donde describimos Cómo crear una aplicación web PHP Laravel 6 CRUD con MySQL .
Este tutorial cubrirá cómo construir una API CRUD REST simple en PHP y MySQL, probar la API RESTful de PHP con
Postmen y configurar el entorno de desarrollo PHP en su sistema de desarrollo local desde cero.

Tabla de contenido 7. Obtener registros de tablas MySQL


1. API (interfaz de programación de aplicaciones) 8. Obtenga una sola fila de la base de datos MySQL a través de la
2. ¿Qué es la API REST? API de PHP
3. Estructura de archivo de la API REST de PHP 7 9. Agregar / insertar registro único
4. Configuración de la base de datos MySQL 10. Editar / actualizar tabla Mysql
5. Realizar conexión a la base de datos MySQL 11. Eliminar / Eliminar registro Mysql único
6. Crear clase PHP 12. Resumen

¿Qué es API (interfaz de programación de aplicaciones)?


API significa Interfaz de programación de aplicaciones y es un conjunto de rutinas, protocolos y herramientas para
crear aplicaciones de software. Una interfaz API hace posible la comunicación entre varios componentes de
software.
En el desarrollo de software, API es una URL que maneja los datos de la aplicación web a través de solicitudes HTTP
GET, POST, UPDATE & DELETE, y administra las operaciones CRUD.
¿Qué es la API REST?
La transferencia de estado representacional (REST) es un estilo de arquitectura de software que define un conjunto
de restricciones que se utilizarán para crear servicios web.  Los servicios web que se ajustan al estilo arquitectónico
REST, denominados servicios web RESTful, proporcionan interoperabilidad entre sistemas informáticos en
Internet.  Los servicios web RESTful permiten que los sistemas solicitantes accedan y manipulen representaciones
textuales de recursos web mediante el uso de un conjunto uniforme y predefinido de operaciones sin estado.  Otros
tipos de servicios web, como los servicios web SOAP, exponen sus propios conjuntos arbitrarios de operaciones.
fuente: wikipedia
Estructura del archivo del proyecto de la API de PHP 7
Esta será la estructura de archivos de nuestro proyecto de API REST de PHP 7,
creamos carpetas api , class y config para almacenar los archivos de configuración relacionados con la base de datos
API y MySQL.

EXPLORER:PHP-REST-API

>api
create.php
delete.php
read.php
update.php
>class
employees.php
>config
database.php

Puede ejecutar su proyecto PHP a través de MAMP o WAMP, sin embargo, estamos usando la herramienta de línea
de comandos para iniciar el proyecto PHP.
Navegue hasta el directorio donde ha ubicado su proyecto PHP.
cd php-project-name
Intento
557621783.docx [Escriba aquí] 2 de 10

Copiar
Una vez que esté en la carpeta del proyecto, ejecute el siguiente comando para iniciar la aplicación PHP 7.
php -S 127.0.0.1:8080
Intento
Copiar
La siguiente salida se mostrará en la pantalla de su terminal.
PHP 7.3.11 Development Server started at Thu May 7 13:21:35 2020
Listening on http://127.0.0.1:8080
Document root is /Users/digamber/Desktop/php-rest-api
Intento
Copiar
Compruebe su proyecto en la siguiente URL: http://127.0.0.1:8080
Configuración de la base de datos MySQL
Antes de comenzar, necesitamos crear una phpapidbbase de datos, bueno, esto se puede hacer a través de dos métodos, o puede
usar PhpMyAdmin o puede hacerlo accediendo al usuario raíz de MySQL a través del terminal o la herramienta de línea de comandos para
crear la base de datos.
Hemos escrito un artículo detallado sobre la instalación y configuración de MySQL en la aplicación Terminal de Mac .
Estamos accediendo al usuario raíz a través de la línea de comandos para crear la base de datos.

mysql -u root -p
Intento
Copiar
Cree una nueva base de datos MySQL.
CREATE DATABASE phpapidb;
Intento
Copiar
Verifique la base de datos.
SHOW DATABASES;

+--------------------+
| Database |
+--------------------+
| information_schema |
| mysql |
| performance_schema |
| phpapidb |
| sys |
+--------------------+
Intento
Copiar
Usa la base de datos.
use phpapidb;
Intento
Copiar
Una vez que haya terminado con la creación de la base de datos, debe ejecutar el script SQL para crear la tabla.
CREATE TABLE IF NOT EXISTS `Employee` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(256) NOT NULL,
`email` varchar(50),
`age` int(11) NOT NULL,
`designation` varchar(255) NOT NULL,
`created` datetime NOT NULL,
PRIMARY KEY (`id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 AUTO_INCREMENT=19;
Intento
Copiar
Asegúrese de qué tabla ha creado.
SHOW tables;

+--------------------+
| Tables_in_phpapidb |
+--------------------+
| Employee |
+--------------------+
Intento
Copiar
Complete los datos en la `Employee`tabla.
INSERT INTO `Employee` (`id`, `name`, `email`, `age`, `designation`, `created`) VALUES
(1, 'John Doe', 'johndoe@gmail.com', 32, 'Data Scientist', '2012-06-01 02:12:30'),
(2, 'David Costa', 'sam.mraz1996@yahoo.com', 29, 'Apparel Patternmaker', '2013-03-03 01:20:10'),
(3, 'Todd Martell', 'liliane_hirt@gmail.com', 36, 'Accountant', '2014-09-20 03:10:25'),
(4, 'Adela Marion', 'michael2004@yahoo.com', 42, 'Shipping Manager', '2015-04-11 04:11:12'),
(5, 'Matthew Popp', 'krystel_wol7@gmail.com', 48, 'Chief Sustainability Officer', '2016-01-04 05:20:30'),
(6, 'Alan Wallin', 'neva_gutman10@hotmail.com', 37, 'Chemical Technician', '2017-01-10 06:40:10'),
(7, 'Joyce Hinze', 'davonte.maye@yahoo.com', 44, 'Transportation Planner', '2017-05-02 02:20:30'),
(8, 'Donna Andrews', 'joesph.quitz@yahoo.com', 49, 'Wind Energy Engineer', '2018-01-04 05:15:35'),
(9, 'Andrew Best', 'jeramie_roh@hotmail.com', 51, 'Geneticist', '2019-01-02 02:20:30'),
(10, 'Joel Ogle', 'summer_shanah@hotmail.com', 45, 'Space Sciences Teacher', '2020-02-01 06:22:50');
Intento
Copiar
557621783.docx [Escriba aquí] 3 de 10

Si está utilizando PHP con MySQL 8.0+, es posible que obtenga este error: El servidor solicitó un método de
autenticación desconocido para el cliente.

MySQL 8 usa auth_socket como complemento predeterminado, por lo que sus aplicaciones requieren que inicie
sesión en su base de datos con una contraseña. Debe iniciar sesión como root en mysql utilizando el siguiente script
SQL.
ALTER USER 'root'@'localhost' IDENTIFIED WITH mysql_native_password BY 'password';
Intento
Copiar
1. Necesita reemplazar 'password'con su contraseña de root.
2. Si su aplicación no ha iniciado sesión en su base de datos con el usuario raíz, reemplace el 'root'usuario en el
comando anterior con el usuario que está usando su aplicación.
Hacer una conexión de base de datos MySQL con PHP 7
El siguiente código contiene los detalles de la base de datos MySQL, como el nombre de la base de datos, el nombre de usuario y la
contraseña. Hace la conexión de la base de datos con PHP usando el PDO.
La extensión PHP Data Objects (PDO) especifica una interfaz liviana y consistente para acceder a bases de datos en PHP.  Cada controlador de
base de datos que implementa la interfaz PDO puede exponer características específicas de la base de datos como funciones de extensión
regulares.  Tenga en cuenta que no puede realizar ninguna función de base de datos utilizando la extensión PDO por sí sola;  debe utilizar un
controlador PDO específico de la base de datos para acceder a un servidor de base de datos.
fuente - php.net
Cree la configcarpeta dentro del proyecto de la API de PHP, también cree el archivo database.php y coloque el siguiente código.

<?php
class Database {
private $host = "127.0.0.1";
private $database_name = "phpapidb";
private $username = "root";
private $password = "xxxxxxxx";

public $conn;

public function getConnection(){


$this->conn = null;
try{
$this->conn = new PDO("mysql:host=" . $this->host . ";dbname=" . $this->database_name, $this-
>username, $this->password);
$this->conn->exec("set names utf8");
}catch(PDOException $exception){
echo "Database could not be connected: " . $exception->getMessage();
}
return $this->conn;
}
}
?>
PHP
Copiar
Crear clase PHP
Ahora, crearemos la clase PHP con el nombre de Empleado. Las clases de PHP se utilizan para ejecutar programación orientada a objetos en
PHP. Las clases PHP encapsulan los valores de la tabla para la base de datos. Definiremos los valores que se almacenan en forma de variable en
la tabla SQL.
Las propiedades de la tabla SQL están asociadas con la clase Connection que se agrega mediante la clase constructora.
Cada clase de objeto contiene el método CRUD que se opera a través de las funciones de PHP para realizar las operaciones CREATE, READ,
UPDATE & DELETE para las filas definidas de la tabla.
Cree el archivo class / employee.php y defina los métodos CRUD dentro de la clase Employee.

<?php
class Employee{

// Connection
private $conn;

// Table
private $db_table = "Employee";

// Columns
public $id;
public $name;
public $email;
public $age;
public $designation;
public $created;

// Db connection
557621783.docx [Escriba aquí] 4 de 10

public function __construct($db){


$this->conn = $db;
}

// GET ALL
public function getEmployees(){
$sqlQuery = "SELECT id, name, email, age, designation, created FROM " . $this->db_table . "";
$stmt = $this->conn->prepare($sqlQuery);
$stmt->execute();
return $stmt;
}

// CREATE
public function createEmployee(){
$sqlQuery = "INSERT INTO
". $this->db_table ."
SET
name = :name,
email = :email,
age = :age,
designation = :designation,
created = :created";

$stmt = $this->conn->prepare($sqlQuery);

// sanitize
$this->name=htmlspecialchars(strip_tags($this->name));
$this->email=htmlspecialchars(strip_tags($this->email));
$this->age=htmlspecialchars(strip_tags($this->age));
$this->designation=htmlspecialchars(strip_tags($this->designation));
$this->created=htmlspecialchars(strip_tags($this->created));

// bind data
$stmt->bindParam(":name", $this->name);
$stmt->bindParam(":email", $this->email);
$stmt->bindParam(":age", $this->age);
$stmt->bindParam(":designation", $this->designation);
$stmt->bindParam(":created", $this->created);

if($stmt->execute()){
return true;
}
return false;
}

// READ single
public function getSingleEmployee(){
$sqlQuery = "SELECT
id,
name,
email,
age,
designation,
created
FROM
". $this->db_table ."
WHERE
id = ?
LIMIT 0,1";

$stmt = $this->conn->prepare($sqlQuery);

$stmt->bindParam(1, $this->id);

$stmt->execute();

$dataRow = $stmt->fetch(PDO::FETCH_ASSOC);

$this->name = $dataRow['name'];
$this->email = $dataRow['email'];
$this->age = $dataRow['age'];
$this->designation = $dataRow['designation'];
$this->created = $dataRow['created'];
}

// UPDATE
public function updateEmployee(){
$sqlQuery = "UPDATE
". $this->db_table ."
SET
557621783.docx [Escriba aquí] 5 de 10

name = :name,
email = :email,
age = :age,
designation = :designation,
created = :created
WHERE
id = :id";

$stmt = $this->conn->prepare($sqlQuery);

$this->name=htmlspecialchars(strip_tags($this->name));
$this->email=htmlspecialchars(strip_tags($this->email));
$this->age=htmlspecialchars(strip_tags($this->age));
$this->designation=htmlspecialchars(strip_tags($this->designation));
$this->created=htmlspecialchars(strip_tags($this->created));
$this->id=htmlspecialchars(strip_tags($this->id));

// bind data
$stmt->bindParam(":name", $this->name);
$stmt->bindParam(":email", $this->email);
$stmt->bindParam(":age", $this->age);
$stmt->bindParam(":designation", $this->designation);
$stmt->bindParam(":created", $this->created);
$stmt->bindParam(":id", $this->id);

if($stmt->execute()){
return true;
}
return false;
}

// DELETE
function deleteEmployee(){
$sqlQuery = "DELETE FROM " . $this->db_table . " WHERE id = ?";
$stmt = $this->conn->prepare($sqlQuery);

$this->id=htmlspecialchars(strip_tags($this->id));

$stmt->bindParam(1, $this->id);

if($stmt->execute()){
return true;
}
return false;
}

}
?>
PHP
Copiar
La clase Empleado gestiona la operación CRUD
 __construct() - Prepara la conexión a la base de datos.
 getEmployees() - Obtenga todos los registros.
 getSingleEmployee() - Obtenga registros únicos.
 createEmployee() - Crear registro.
 updateEmployee() - Actualizar registro.
 deleteEmployee() - Obtener un solo registro.
Obtener registros de tablas MySQL mediante el punto final de la API REST de PHP
El siguiente código recupera todos los registros de la tabla MySQL. Así que cree el archivo read.php en la apicarpeta y coloque el siguiente
código.

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");

include_once '../config/database.php';
include_once '../class/employees.php';

$database = new Database();


$db = $database->getConnection();

$items = new Employee($db);


557621783.docx [Escriba aquí] 6 de 10

$stmt = $items->getEmployees();
$itemCount = $stmt->rowCount();

echo json_encode($itemCount);

if($itemCount > 0){

$employeeArr = array();
$employeeArr["body"] = array();
$employeeArr["itemCount"] = $itemCount;

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)){


extract($row);
$e = array(
"id" => $id,
"name" => $name,
"email" => $email,
"age" => $age,
"designation" => $designation,
"created" => $created
);

array_push($employeeArr["body"], $e);
}
echo json_encode($employeeArr);
}

else{
http_response_code(404);
echo json_encode(
array("message" => "No record found.")
);
}
?>
PHP
Copiar
Probemos el punto final de la API de PHP usando Postman , abra Postman y use la siguiente URL y haga clic en el botón Enviar para verificar el
resultado.
Método Punto final
OBTENER http: // localhost: 8080 / api / read.php

Obtenga una sola fila de la base de datos MySQL a través de la API de PHP
El siguiente código recupera una sola columna de la tabla de la base de datos MySQL. Cree el archivo single_read.php en la apicarpeta y
coloque el siguiente código.
La instrucción SELECT se usa aquí para obtener la columna de la tabla, en el siguiente código, estamos seleccionando los valores de Empleado
de la tabla MySQL.

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
557621783.docx [Escriba aquí] 7 de 10

header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-
Requested-With");

include_once '../config/database.php';
include_once '../class/employees.php';

$database = new Database();


$db = $database->getConnection();

$item = new Employee($db);

$item->id = isset($_GET['id']) ? $_GET['id'] : die();

$item->getSingleEmployee();

if($item->name != null){
// create array
$emp_arr = array(
"id" => $item->id,
"name" => $item->name,
"email" => $item->email,
"age" => $item->age,
"designation" => $item->designation,
"created" => $item->created
);

http_response_code(200);
echo json_encode($emp_arr);
}

else{
http_response_code(404);
echo json_encode("Employee not found.");
}
?>
PHP
Copiar
Método Punto final
OBTENER localhost: 8080 / api / single_read.php /? id = 2

Insertar o agregar un solo registro en la tabla MySQL


En este paso, crearemos puntos finales de la API REST de PHP para insertar o agregar un solo registro en la tabla MySQL.
Cree el archivo create.php en la apicarpeta y agregue el siguiente código.

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-
With");

include_once '../config/database.php';
include_once '../class/employees.php';

$database = new Database();


557621783.docx [Escriba aquí] 8 de 10

$db = $database->getConnection();

$item = new Employee($db);

$data = json_decode(file_get_contents("php://input"));

$item->name = $data->name;
$item->email = $data->email;
$item->age = $data->age;
$item->designation = $data->designation;
$item->created = date('Y-m-d H:i:s');

if($item->createEmployee()){
echo 'Employee created successfully.';
} else{
echo 'Employee could not be created.';
}
?>
PHP
Copiar
Método Punto final
ENVIAR http: // localhost: 8080 / api / create.php

Editar / actualizar la tabla MySQL usando PHP 7 API


Este paso le explica cómo actualizar o editar los datos para un registro MySQL específico. Podemos utilizar la API RESTful de PHP 7 para realizar
la actualización necesaria en los datos que se almacenan en la base de datos MySQL.
Cree el archivo update.php en la apicarpeta y coloque el siguiente código.

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-
With");

include_once '../config/database.php';
include_once '../class/employees.php';

$database = new Database();


$db = $database->getConnection();

$item = new Employee($db);

$data = json_decode(file_get_contents("php://input"));

$item->id = $data->id;

// employee values
$item->name = $data->name;
$item->email = $data->email;
$item->age = $data->age;
$item->designation = $data->designation;
$item->created = date('Y-m-d H:i:s');

if($item->updateEmployee()){
echo json_encode("Employee data updated.");
} else{
echo json_encode("Data could not be updated");
557621783.docx [Escriba aquí] 9 de 10

}
?>
PHP
Copiar
Método Punto final
ENVIAR http: // localhost: 8080 / api / update.php

Eliminar / Eliminar registro Mysql único mediante la API de PHP


Cree el archivo delete.php en la apicarpeta de este archivo; escribiremos el inicio de sesión para eliminar o eliminar el registro de un solo
empleado de la tabla de datos MySQL utilizando PHP 7 RESTful API. Realizaremos la llamada a la API usando el deletedEmployee()método.

<?php
header("Access-Control-Allow-Origin: *");
header("Content-Type: application/json; charset=UTF-8");
header("Access-Control-Allow-Methods: POST");
header("Access-Control-Max-Age: 3600");
header("Access-Control-Allow-Headers: Content-Type, Access-Control-Allow-Headers, Authorization, X-Requested-
With");

include_once '../config/database.php';
include_once '../class/employees.php';

$database = new Database();


$db = $database->getConnection();

$item = new Employee($db);

$data = json_decode(file_get_contents("php://input"));

$item->id = $data->id;

if($item->deleteEmployee()){
echo json_encode("Employee deleted.");
} else{
echo json_encode("Data could not be deleted");
}
?>
PHP
Copiar
Método Punto final
ELIMINAR localhost: 8080 / api / delete.php
557621783.docx [Escriba aquí] 10 de 10

Resumen
Así que esto fue todo, en este tutorial hemos aprendido cómo crear una API RESTful CRUD simple con PHP 7 y MySQL 8, también exploramos
sobre los métodos PHP útiles como htmlspecialchars () , bindParam () , execute () , PHP PDO y json_encode () .
Puede descargar los archivos completos del proyecto desde GitHub .
https://www.positronx.io/create-simple-php-crud-rest-api-with-mysql-php-pdo/

También podría gustarte