Ejemplo de CURL, POST y MySQL con PHP


En este ejemplo vamos a enviar peticiones POST con un Script php y la vamos a recibir en otro script donde guardaremos los datos en base de datos mysql.

En el articulo anterior de CURL vimos como enviar peticiones GET, hoy es momento de enviar parámetros con el formato POST, es muy similar al ejemplo anterior.

Antes de nada vamos a hacer unos preparativos.

Base de datos

Para la base de datos vamos a usar una que siempre usamos en nuestros ejemplo, es una libreta de numeros de telefono sencilla.

create database pruebacurl;
use pruebacurl;

create table persona(
	id int not null auto_increment primary key,
	name varchar(255),
	phone varchar(255),
	created_at datetime
);

La base de datos va a estar del lado del script que recibe los datos, este puede estar en un servidor diferente. Recordemos que la URl a la que nos vamos a conectar la indicaremos en el script de CURL.

Codigo 1

Este es el código que va a recibir las peticiones POST y los datos que requerimos nombre y teléfono los almacenaremos en la base de datos.

<?php

if(count($_POST)>0){

	$name = $_POST['name']; // Recibimos el paramentro name
	$phone = $_POST['phone']; // Recibimos el paramentro phone

	$con  = new mysqli("localhost","root","","pruebacurl"); // COnexion a la base de datos
	$sql = "insert into persona (name,phone, created_at) value (\"$name\",\"$phone\", NOW())"; // Consulta SQL de insercion
	$con->query($sql); // Ejecutamos la consulta
}

?>

Código 2

Este es el código que va a enviar las peticiones usando CURL.

Le agregue comentarios para que se entienda lo que se hace en cada linea.

<?php
$url = "http://localhost/pruebacurl2post/process.php"; // Definimos la URL
$parametros = array(
	"name"=>"Agustin Ramos",
	"phone"=>"123456789"

);  // Array de datos que se va a enviar por POST

$ci = curl_init(); // Inicializamos CURL
curl_setopt($ci,CURLOPT_URL,$url); // Enviamos la peticion GET de la URL
curl_setopt($ci,CURLOPT_POSTFIELDS, http_build_query($parametros)); // Enviamos los datos via POST
curl_setopt($ci,CURLOPT_RETURNTRANSFER,true); // Agregamos este parametro para almacenar los datos/resultados en una variable

$tmp = curl_exec($ci); // Ejecutamos la peticion GET

$data = json_decode($tmp); // Decodificamos los datos jSON a un Objeto Std
print_r($data);// Mostramos los resultados

curl_close($ci); // Cerramos CURL
?>

Ahora si cuando ejecutemos el script del código 2, este enviara los datos al código 1, este los recibira y los almacenara en la base de datos.

Conclusión

Con este ejemplo simple pero poderoso podemos hacer servicios web y almacenar los datos en base de datos mysql.

Este ejemplo lo pueden modificar y adaptar a sus necesidades. En mi canal de youtube les dejare un video demostración y resulver sus dudas.

Leave a comment