Hola gente este es mi primer post y espero cumplir con todas las normas. ![]()
Buscando en el foro encontré situaciones similares pero a través de un script PHP y yo preciso hacerlo desde el mismo sketch
Estoy usando el modulo ESP8266 con el ejemplo basic_select de la librería MySQL connector
Con ese ejemplo logro tomar el id de una tabla y mi idea es es un segundo paso hacer un UPDATE a la tabla según la clausula WHERE donde ahí es que uso la variable obtenida varidPedido pero de este modo no realiza el UPDATE pero tampoco me da error el Sketch.
Si yo remplazo la variable dentro de la query2 por un valor manual funciona, pero la idea es que este valor sea dinámico.
Esta es la segunda query agregada con la variable varidPedido dentro de WHERE
char query2[] = "UPDATE sitiocero.pedidos SET impreso_pedidos = 1 WHERE pedidos.id_pedidos = varidPedido";
Y este es el código completo
#include <ESP8266WiFi.h>
#include <WiFiClient.h>
#include <MySQL_Connection.h>
#include <MySQL_Cursor.h>
// Replace these with your WiFi network settings
const char* ssid = "redwifi"; //replace this with your WiFi network name
const char* password = "noselaclave"; //replace this with your WiFi network password
WiFiClient client;
MySQL_Connection conn((Client *)&client);
char query[] = "SELECT id_pedidos FROM sitiocero.pedidos WHERE impreso_pedidos = 0 ORDER BY id_pedidos ASC LIMIT 1";
//**************
//Segunda query para actualizar segun id obtenida
//**************
char query2[] = "UPDATE sitiocero.pedidos SET impreso_pedidos = 1 WHERE pedidos.id_pedidos = varidPedido";
IPAddress server_addr(192,168,0,4); // MySQL server IP
char mysqluser[] = "ardu"; // MySQL user
char mysqlpassword[] = "ardu"; // MySQL password
char guardado = '0';
void setup()
{
delay(1000);
Serial.begin(115200);
WiFi.begin(ssid, password);
Serial.println();
Serial.print("Conectando");
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
}
Serial.println("Ferpecto!");
Serial.print("La ip es: ");
Serial.println(WiFi.localIP());
while (conn.connect(server_addr, 3306, mysqluser, mysqlpassword) != true) {
delay(200);
Serial.print ( "." );
}
Serial.println("");
Serial.println("Connected to SQL Server!");
}
void loop() {
row_values *row = NULL;
long varidPedido = 0;
delay(1000);
// Initiate the query class instance
MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
// Execute the query
cur_mem->execute(query);
// Fetch the columns (required) but we don't use them.
column_names *columns = cur_mem->get_columns();
// Read the row (we are only expecting the one)
do {
row = cur_mem->get_next_row();
if (row != NULL) {
varidPedido = atol(row->values[0]);
}
} while (row != NULL);
//***********
//Llamo segunda query para grabar el dato segun id obtenida
//***********
cur_mem->execute(query2);
// Deleting the cursor also frees up memory used
//delete cur_mem;
// Show the result
Serial.print(" Id del pedido = ");
Serial.println(varidPedido);
Serial.println(query2);
//MySQL_Cursor *cur_mem = new MySQL_Cursor(&conn);
// Execute the query
//cur_mem->execute(query2);
// Note: since there are no results, we do not need to read any data
// Deleting the cursor also frees up memory used
delete cur_mem;
}
Espero puedan decirme el por que y si es que todo esta bien segun las normas.
Saludos





