为什么查询显示系统错误?

时间:2013-07-03 11:10:47

标签: php mysql

我有一个查询,我想在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服务器版本,以便使用正确的语法   'SET @sql = CONCAT附近''SELECT st.Style,',@ sql,'FROM Size s'at at   第12行

我只是不知道如何解决这个错误。有人可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分: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 
                  ');

答案 1 :(得分:0)

mysql_query不支持多个查询。

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

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