工作MySQL查询在Perl中失败

时间:2011-03-07 13:35:04

标签: mysql perl phpmyadmin

我有一个查询,当从phpMyAdmin中运行时,它可以工作,但是当集成在用Perl编写的网站中时,它会失败并抛出错误。 两者都通过连接到同一个数据库运行,并且在集成到网站时从编码/格式化方面运行,所有都是正确的,与其他查询相同。

对此的任何帮助将不胜感激 - 谢谢!

MySQL查询:

CREATE TEMPORARY TABLE tmp_lecture_days (
timeslot_id int(50)
);
INSERT INTO tmp_lecture_days (timeslot_id)
SELECT DISTINCT tab_appointment.timeslot_id
FROM tab_appointment WHERE lecture_id = '1115';
SELECT COUNT(timeslot_id)
FROM tmp_lecture_days;

Perl中的MySQL查询:

            $query
                = &statement_database(
                    "CREATE TEMPORARY TABLE tmp_lecture_days (
                    timeslot_id int(50)
                    );
                    INSERT INTO tmp_lecture_days (timeslot_id)
                    SELECT DISTINCT tab_appointment.timeslot_id
                    FROM tab_appointment WHERE lecture_id = '1115';
                    SELECT COUNT(timeslot_id)
                    FROM tmp_lecture_days;");

             my ($days) = $query->fetchrow_array;

错误日志:

  

7.3.2011 10:14:12错误您的SQL语法有错误;   检查与您的MySQL服务器版本对应的手册,以便在'附近使用正确的语法;   7.3.2011 10:14:12错误INSERT INTO tmp_lecture_days(timeslot_id)   7.3.2011 10:14:12错误SELECT DISTINCT tab_appoi'在第3行

2 个答案:

答案 0 :(得分:8)

如果您使用DBI运行查询,则不允许向其中放入多个语句。尝试将CREATE TABLE ...放入一个查询中,将INSERT ...放入另一个查询中。

答案 1 :(得分:3)

我认为以下查询等同于3个查询:

SELECT COUNT(DISTINCT timeslot_id) FROM tab_appointment
    WHERE lecture_id = '1115'

有关更多详细信息,请查看COUNT()here的MySQL参考手册。