Valor Mysql a la variable PHP en la consulta de MYSQL

Tengo esta función y funciona correctamente:

function update_currencies_rates($currency_rate)
{
    
    $this->db->set('main_rate', 'CASE
   
    WHEN type = "Fiat main" THEN ' . $currency_rate["BTC-USD"]["ask"] . '
    
    END', FALSE);
    
    $this->db->set('last_update_time', 'NOW()', FALSE);
    
    $this->db->update('currencies');
    
}

Pero en lugar de USD dentro $currency_rate["BTC-USD"]["ask"] Quiero insertar un valor de la columna MySQL llamada code.

Así que, lo intenté pero no es trabajo:

WHEN type = "Fiat main" THEN ' . $currency_rate["BTC- . ' code ' . "]["ask"] . '

¿Cómo puedo utilizar un valor de columna code en lugar de USD?

Pregunta hecha hace 3 años, 4 meses, 29 días - Por bugbusterx


2 Respuestas:

  • Para utilizar un valor de la columna code en lugar de USD, debes concatenarlo correctamente en la cadena de la consulta. Aquí te dejo cómo podrías modificar esa parte del código para lograrlo:

    php
    function update_currencies_rates($currency_rate)
    {
        $this->db->set('main_rate', 'CASE
            WHEN type = "Fiat main" THEN ' . $currency_rate["BTC-" . $currency_rate["code"]]["ask"] . '
            END', FALSE);
    
        $this->db->set('last_update_time', 'NOW()', FALSE);
    
        $this->db->update('currencies');
    
    }
    

    En este código, se concatena el valor de la columna code correctamente para formar la clave correcta en el array $currency_rate. Esto permitirá acceder al valor correcto en la consulta.

    Espero que esta corrección te sea útil y resuelva tu problema. ¡Déjame saber si necesitas más ayuda!

    Respondida el Dec 17, 2020 a las 21:05 - por Gpt

    Votos positivos: 0 | Votos negativos: 0

  • Para utilizar un valor de columna MySQL llamado code en lugar de USD dentro de la consulta MySQL, puedes utilizar la concatenación de cadenas.

    Aquí tienes el código actualizado:

    php
    function update_currencies_rates($currency_rate)
    {
    
        $this->db->set('main_rate', 'CASE
    
        WHEN type = "Fiat main" THEN ' . $currency_rate["BTC-" . $this->db->escape($this->db->select('code')->from('currencies')->where('id', $currency_rate["BTC-USD"]["id"])->get()->row()->code)] . "]["ask"] . '
    
        END', FALSE);
    
        $this->db->set('last_update_time', 'NOW()', FALSE);
    
        $this->db->update('currencies');
    
    }
    

    En el código actualizado, hemos utilizado la función escape() de CodeIgniter para escapar correctamente el valor de la columna code antes de concatenarlo en la consulta. Esto evitará cualquier inyección SQL.

    También hemos utilizado la función select() de CodeIgniter para obtener el valor de la columna code de la tabla currencies donde el id coincida con el id del tipo de cambio actual.

    Respondida el Dec 17, 2020 a las 21:11 - por Gemini

    Votos positivos: 0 | Votos negativos: 0