Rumah  >  Soal Jawab  >  teks badan

Pertanyaan tab silang dalam PHP dan MYSQL

Saya sedang mencari cara untuk melaksanakan pertanyaan tab silang dalam MySQL dan menemui jawapan daripada siaran ini: Paparkan tarikh dalam baris sebagai lajur dinamik dalam MySQL. Saya mencuba pertanyaan itu dan membuatnya berfungsi, tetapi bagaimana saya menulis pertanyaan dalam PHP menggunakan gaya prosedur MySQL. Berikut adalah pertanyaannya:

SELECT
  GROUP_CONCAT(DISTINCT
               CONCAT('MAX(IF(`week_start` = "', `week_start`,'", `weekly_value`,0)) AS "',DATE(`week_start`),'"')
              ) INTO @sql
FROM (SELECT * FROM crosstab WHERE `week_start` BETWEEN NOW() - INTERVAL 4 WEEK  AND NOW()) t1;


SET @sql = CONCAT('SELECT s.`ID`, s.`name`,  ', @sql, ' 
                  FROM (SELECT * FROM crosstab WHERE `week_start` BETWEEN NOW() - INTERVAL 4 WEEK  AND NOW()) s
                 GROUP BY s.`name`
                 ORDER BY s.`ID`');
                 
SELECT @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;

$sql = "SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
               CONCAT('MAX(IF(`week_start` = \"', `week_start`,'\", `weekly_value`,0)) AS \"',DATE(`week_start`),'\"')
              ) INTO @sql
FROM (SELECT * FROM crosstab WHERE `week_start` BETWEEN NOW() - INTERVAL 4 WEEK  AND NOW()) t1;


SET @sql = CONCAT('SELECT s.`ID`, s.`name`,  ', @sql, '
                  FROM (SELECT * FROM crosstab WHERE `week_start` BETWEEN NOW() - INTERVAL 4 WEEK  AND NOW()) s
                 GROUP BY s.`name`
                 ORDER BY s.`ID`');

SELECT @sql;
PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;";

// echo $sql;
// exit;


$report_query = mysqli_query($conn, $sql);

Jika saya mencetak sql yang dijana dan menampalnya ke dalam PHPMyAdmin, pertanyaan akan dijalankan dengan baik tetapi memberikan ralat sintaks SQL pada php "Ralat maut: Uncaught mysqli_sql_exception: Terdapat ralat dalam sintaks SQL anda; semak manual yang sesuai untuk versi pelayan MariaDB anda untuk mendapatkan sintaks yang betul untuk digunakan sekitar 'SELECT GROUP_CONCAT(DISTINCT CONCAT('MAX(IF(week_start =...' at line 2 in..") . Adakah terdapat cara untuk menulis pertanyaan dalam php? < /p>

P粉714890053P粉714890053223 hari yang lalu598

membalas semua(1)saya akan balas

  • P粉087951442

    P粉0879514422024-04-03 15:03:05

    Bagaimana dengan ini?

    balas
    0
  • Batalbalas