De PHP a MySQL (con un foreach)

Iniciado por SpeedyFrost, 11 Enero 2019, 13:14 PM

0 Miembros y 1 Visitante están viendo este tema.

SpeedyFrost

Buenos días,

Necesito ayuda con una cosa. Estoy haciendo un archivo PHP que recibe un json por _POST, lo convierte en string y lo inserta en una tabla que hice en una BBDD Mysql. He utilizado un foreach para que recorra el string y añada cada elemento en su columna establecida.
El caso es que para separar los elemento de $value he utilizado una coma que se añade al final de cada uno, incluso del último. Y esto me da error luego.

¿¿Como puedo hacer que la coma no se añada al final del último elemento de la consulta?? Es lo que me da error al ejecutarlo.

Adjunto mi código.

Código (php) [Seleccionar]
<?php

include ('Tools.php');
$conexion=connect();

$parametros '{"status":"PBC-IVR0000","signature":"6777F9E540A0519A80388F","count":1400,"locator":"1547116640","orderId":"37852","tpv_p":"141","tpv_resp":"2452","id_tr":"1233214","id_t_pbc":"15470.3221"}';

$obj=json_decode($parametros);

$sql "INSERT INTO DC_paybycall_status set ";

foreach (
$obj as $key => $value) {

if ($key=='locator')$key='localizador';

$sql .= $key " = '" $value "' , ";       <--Esta es la coma

}

echo 
$sql;

mysqli_query($conexion,$sql);
echo("Error description: " mysqli_error($conexion));

mysql_close($conexion);

?>



Gracias mil!!!!



Mod: Obligatorio el uso de etiquetas GeSHi.
Mod: Los temas sobre PHP van al subforo de PHP.

chatiel

#1
Hola SpeedyFrost

Te juro que no comprendo porque tienes la linea:
Código (php) [Seleccionar]
$parametros = '{"status":"PBC-IVR0000","signature":"6777F9E540A0519A80388F","count":1400,"locator":"1547116640","orderId":"37852","tpv_p":"141","tpv_resp":"2452","id_tr":"1233214","id_t_pbc":"15470.3221"}';

Eso se puede leer con cURL en php.
Tienes la URL desde donde puedes extraer todos esos datos?

Te doy un ejemplo:

Código (php) [Seleccionar]

//Funcion para crear conexion CURL

function curl($url) {
$ch = curl_init($url); // Inicia sesión cURL
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Configura cURL para devolver el resultado como cadena
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // Configura cURL para que no verifique el peer del certificado dado que nuestra URL utiliza el protocolo HTTPS
$info = curl_exec($ch); // Establece una sesión cURL y asigna la información a la variable $info
curl_close($ch); // Cierra sesión cURL
return $info; // Devuelve la información de la función
}

$url = "https://api.mercadolibre.com/items/MLM576593427";
   $sitioweb = curl($url);
$info = json_decode($sitioweb);
//imprimir dato
echo $info->id."\n";
echo $info->title."\n";
echo $info->listing_type_id."\n";


Te regalo horas y horas de diversión que tuve hace unos días.

De esta forma vas a poder leer los datos limpiamente desde cualquier url con json.

Espero que te sirva bro.
bytes :)

SpeedyFrost

#2
La línea esa es el ejemplo que me va a llegar. Este php se agregará a otro sitio. Lo importante no es ese JSON (Aunque te agradezco mucho la molestia de ponerme el ejemplo del Curl).. Lo que yo necesito es saber como eliminar la última coma que tengo en el string. Estuve investigando y al parecer con la función ""rtrim() o trim()"" podría conseguirlo. Pero la utilizo en el ECHO y no funciona... Alguna idea de porque?

SpeedyFrost

#3
La solución estaba en especificar el rtrim() con la cadena exacta.


Código (php) [Seleccionar]
echo rtrim($sql, ", ");

Espero que sirva para futuras consultas!

Un saludo!



Mod: Obligatorio el uso de etiquetas GeSHi.