Aquí hay un ejemplo de mi tabla MySQL:

id, type, value
1, total_clicks, 15
2, total_revenue, 32.42
3, conversion_rate, 1.432

Estoy usando este comando para obtener todas esas filas:

SELECT * FROM statistics

¿Cómo puedo usar PHP para hacer eco de la columna value en función de lo que hay en la columna type?

Por ejemplo, ¿cómo haría algo como esto?

echo "We found that $total_clicks generated $total_revenue in revenue.";

Normalmente tendría cada uno de estos como una columna y usaría fetch_assoc para hacer eco del valor de cada columna, pero por alguna razón decidieron dividir estos datos en filas ...

0
ShadowAccount 17 feb. 2020 a las 05:41

2 respuestas

La mejor respuesta

Tiene un par de opciones para almacenar los resultados de la consulta y luego generarlos en PHP:

  1. una matriz asociativa
    while ($row = $result->fetch_assoc()) {
        $data[$row['type']] = $row['value'];
    }
    echo "We found that {$data['total_clicks']} generated {$data['total_revenue']} in revenue.";
  1. variables variables
    while ($row = $result->fetch_assoc()) {
        ${$row['type']} = $row['value'];
    }
    echo "We found that $total_clicks generated $total_revenue in revenue.";
2
Nick 17 feb. 2020 a las 02:49

Un método usa la agregación:

select replace(replace('We found that [total_clicks] generated [total_revenue] in revenue.',
                       '[total_clicks]',
                       max(case when type = 'total_clicks' then value end)
                      ), '[total_revenue],
                      max(case when type = 'total_revenue' then value end)
              )
from statistics;
1
Gordon Linoff 17 feb. 2020 a las 02:46