Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: SpeedyFrost en 11 Enero 2019, 13:14 pm



Título: De PHP a MySQL (con un foreach)
Publicado por: SpeedyFrost en 11 Enero 2019, 13:14 pm
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
  1. <?php
  2.  
  3. include ('Tools.php');
  4. $conexion=connect();
  5.  
  6. $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"}';
  7.  
  8. $obj=json_decode($parametros);
  9.  
  10. $sql = "INSERT INTO DC_paybycall_status set ";
  11.  
  12. foreach ($obj as $key => $value) {
  13.  
  14. if ($key=='locator')$key='localizador';
  15.  
  16. $sql .= $key . " = '" . $value . "' , ";       <--Esta es la coma
  17.  
  18. }
  19.  
  20. echo $sql;
  21.  
  22. mysqli_query($conexion,$sql);
  23. echo("Error description: " . mysqli_error($conexion));
  24.  
  25. mysql_close($conexion);
  26.  
  27. ?>


Gracias mil!!!!


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


Título: Re: De PHP a MySQL (con un foreach)
Publicado por: chatiel en 12 Enero 2019, 06:57 am
Hola SpeedyFrost

Te juro que no comprendo porque tienes la linea:
Código
  1. $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"}';
  2.  
Eso se puede leer con cURL en php.
Tienes la URL desde donde puedes extraer todos esos datos?

Te doy un ejemplo:

Código
  1. //Funcion para crear conexion CURL
  2.  
  3. function curl($url) {
  4. $ch = curl_init($url); // Inicia sesión cURL
  5. curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/2.1 (+http://www.google.com/bot.html)');
  6. curl_setopt($ch, CURLOPT_RETURNTRANSFER, TRUE); // Configura cURL para devolver el resultado como cadena
  7. 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
  8. $info = curl_exec($ch); // Establece una sesión cURL y asigna la información a la variable $info
  9. curl_close($ch); // Cierra sesión cURL
  10. return $info; // Devuelve la información de la función
  11. }
  12.  
  13. $url = "https://api.mercadolibre.com/items/MLM576593427";
  14.    $sitioweb = curl($url);
  15. $info = json_decode($sitioweb);
  16. //imprimir dato
  17. echo $info->id."\n";
  18. echo $info->title."\n";
  19. echo $info->listing_type_id."\n";
  20.  

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 :)


Título: Re: De PHP a MySQL (con un foreach)
Publicado por: SpeedyFrost en 14 Enero 2019, 09:31 am
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?


Título: Re: De PHP a MySQL (con un foreach)
Publicado por: SpeedyFrost en 14 Enero 2019, 10:06 am
La solución estaba en especificar el rtrim() con la cadena exacta.


Código
  1. echo rtrim($sql, ", ");

Espero que sirva para futuras consultas!

Un saludo!


Mod: Obligatorio el uso de etiquetas GeSHi.