我有一个查询,当从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行
答案 0 :(得分:8)
如果您使用DBI运行查询,则不允许向其中放入多个语句。尝试将CREATE TABLE ...
放入一个查询中,将INSERT ...
放入另一个查询中。
答案 1 :(得分:3)
我认为以下查询等同于3个查询:
SELECT COUNT(DISTINCT timeslot_id) FROM tab_appointment
WHERE lecture_id = '1115'
有关更多详细信息,请查看COUNT()here的MySQL参考手册。