PHP - SQL解析语句错误(意外T_LNUMBER)

时间:2014-01-02 20:26:55

标签: php sql syntax-error php-parse-error

任何人都可以帮我调试这个问题吗?这是我想从cron运行的php脚本的一部分。我一直在看它,但无法弄清楚出了什么问题。 以下行抛出PHP错误“PHP Parse错误:语法错误,意外T_LNUMBER在...在线......”

$sqlreadstmt = $db->query("
select distinct 
rsdata.rs_variant,
rsdata.weeknumber,
rsdata.rs_moduleid,
rsdata.rs_objectidentifier,
trdata.tr_objectidentifier,
trdata.tr_testversion,
trdata.tr_plannedgate,
trdata.tr_vnvmethod,
testatussequence.tesequencenr,
trdata.tr_testexecutionstatus 
from rsdata,trdata,module,variantgates,testatussequence 
where rsdata.weeknumber="1339" 
and rsdata.rs_moduleid = module.moduleid 
and rsdata.weeknumber = trdata.weeknumber 
and rsdata.rs_reviewstatus != "Obsolete" 
and rsdata.rs_reviewstatus != "Rejected" 
and rsdata.rs_introbjectidentifieralllevels != "" 
and rsdata.rs_introbjectidentifieralllevels != "Unknown" 
and find_in_set(trdata.tr_objectidentifier, (select rsdata.rs_introbjectidentifieralllevels)) 
and trdata.tr_plannedgate != "" 
and trdata.tr_plannedgate != "Unknown" 
and trdata.tr_plannedgate = variantgates.gate 
and trdata.tr_variant = variantgates.variant 
and trdata.tr_testexecutionstatus = testatussequence.testatus 
order by 
rs_variant ASC,
weeknumber ASC,
rs_moduleid ASC,
rs_objectidentifier ASC,
tr_testversion ASC,
tr_plannedgate ASC,
tr_vnvmethod ASC,
tesequencenr DESC;
");

2 个答案:

答案 0 :(得分:5)

你能试试吗?

$sqlreadstmt = $db->query("
select distinct 
rsdata.rs_variant,
rsdata.weeknumber,
rsdata.rs_moduleid,
rsdata.rs_objectidentifier,
trdata.tr_objectidentifier,
trdata.tr_testversion,
trdata.tr_plannedgate,
trdata.tr_vnvmethod,
testatussequence.tesequencenr,
trdata.tr_testexecutionstatus 
from rsdata,trdata,module,variantgates,testatussequence 
where rsdata.weeknumber='1339' 
and rsdata.rs_moduleid = module.moduleid 
and rsdata.weeknumber = trdata.weeknumber 
and rsdata.rs_reviewstatus != 'Obsolete' 
and rsdata.rs_reviewstatus != 'Rejected' 
and rsdata.rs_introbjectidentifieralllevels != '' 
and rsdata.rs_introbjectidentifieralllevels != 'Unknown' 
and find_in_set(trdata.tr_objectidentifier, (select rsdata.rs_introbjectidentifieralllevels)) 
and trdata.tr_plannedgate != '' 
and trdata.tr_plannedgate != 'Unknown' 
and trdata.tr_plannedgate = variantgates.gate 
and trdata.tr_variant = variantgates.variant 
and trdata.tr_testexecutionstatus = testatussequence.testatus 
order by 
rs_variant ASC,
weeknumber ASC,
rs_moduleid ASC,
rs_objectidentifier ASC,
tr_testversion ASC,
tr_plannedgate ASC,
tr_vnvmethod ASC,
tesequencenr DESC;
");

在双撇号内部,你不能使用其他双撇号“不逃避它们。

否则在sql中,简单的撇号是字符串分隔符。

答案 1 :(得分:4)

看起来问题是你的SQL语句中有双引号,它会关闭用于查询的字符串。尝试在SQL语句中转义双引号,或者只使用单引号。