Cree Full API-rest Con Pdo - PHP 7
Cree Full API-rest Con Pdo - PHP 7
Cree Full API-rest Con Pdo - PHP 7
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.
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;
<?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
// 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';
$stmt = $items->getEmployees();
$itemCount = $stmt->rowCount();
echo json_encode($itemCount);
$employeeArr = array();
$employeeArr["body"] = array();
$employeeArr["itemCount"] = $itemCount;
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';
$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
<?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';
$db = $database->getConnection();
$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
<?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';
$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
<?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';
$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/