0

我有一个查询,我想用 php 编写它,但它显示错误。

我的查询如下:

$exe1 = mysql_query("
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'SUM(CASE WHEN `size_name` = ''',
      `size_name`,
      ''' THEN Quantity ELSE 0 END) AS `',
      `size_name`, '`'
    )
  ) INTO @sql
FROM Size;

SET @sql = CONCAT('SELECT st.Style , ', @sql, '
                  FROM Size s
                  JOIN Style st ON s.style_id = st.id
                   GROUP BY st.Style 
                  ');

PREPARE stmt FROM @sql;
EXECUTE stmt;") or die(mysql_error());

但它显示的信息

您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 12 行的 'SET @sql = CONCAT('SELECT st.Style , ', @sql, ' FROM Size s ' 附近使用正确的语法

我只是不知道如何解决这个错误。谁能帮我解决这个问题?

4

2 回答 2

0

您应该打印出结果查询@sql以查看问题。

在您的情况下,您似乎在最后一个参数之后有一个额外的逗号。尝试换行:

SET @sql = CONCAT('SELECT st.Style , ', @sql, '
                  FROM Size s
                  JOIN Style st ON s.style_id = st.id
                   GROUP BY st.Style 
                  ');

至:

SET @sql = CONCAT('SELECT st.Style , ', @sql'
                  FROM Size s
                  JOIN Style st ON s.style_id = st.id
                   GROUP BY st.Style 
                  ');
于 2013-07-03T11:18:23.110 回答
0

mysql_query 不支持多个查询。

http://php.net/manual/en/function.mysql-query.php

mysql_* 函数已弃用并将被删除。我建议你使用 mysqli_* 函数或 PDO。

于 2013-07-03T11:23:32.173 回答