通过phpMyAdmin执行它时MySql#1243错误

时间:2013-07-02 06:28:09

标签: php mysql sql phpmyadmin

我正在尝试在phpMyAdmin中执行此代码。但是,我收到了以下错误

#1243 - 给予EXECUTE

的未知预处理语句处理程序(stmt)
    SET @sql = NULL;
SELECT
  GROUP_CONCAT(DISTINCT
    CONCAT(
      'count(distinct CASE WHEN topic = ''',
      topic,
      ''' THEN t2.id END) AS `',
      topic, '`'
    )
  ) INTO @sql
FROM
(
  select count(distinct id) total, topic
  from table2 
  group by topic
  order by total desc
  limit 2
) d;

SET @sql 
  = CONCAT('SELECT t1.year, ', @sql, ' 
            from table1 t1
            left join table2 t2
              on t1.id = t2.id
            group by t1.year');

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

查看fiddle以了解实施情况。

如何解决这个问题?此外,作为一名提及者,通过脚本发送时,这将起作用。任何想法如何在PHP中编写脚本?

1 个答案:

答案 0 :(得分:0)

这是因为PMA不使用相同的mysql会话来执行查询,这就是您收到错误的原因。

但是如果你使用相同的mysql函数在脚本中执行它,它应该可以工作。