以下代码段有什么问题?

时间:2013-09-06 05:15:43

标签: php

PHP代码如下:

if($duration!='' && $duration_in_hrs!='') {
    $duration_in_sec = $duration_in_hrs * 60 * 60;
    //echo $grid->mSqlArr['where']; die;
    if(empty($grid->mSqlArr['where']) && $grid->mSqlArr['where']=='')
        $grid->mSqlArr['where'] = " tests.test_duration = "."'"$duration"'"." ".$duration_in_sec;
    else 
        $grid->mSqlArr['where']  .= " AND tests.test_duration "."'"$duration"'"." ".$duration_in_sec;
}

如果我评论第no行的代码。 4到7并回显变量$grid->mSqlArr['where']的值它打印输出is_test_cancled='0' AND is_test_archive='0' 但是当我删除注释并运行代码时出现空白屏幕,我无法知道这是怎么回事。我试图调试,在此期间我收到以下错误 PHP解析错误:语法错误,第218行的view_tests.php中出现意外的T_VARIABLE 解析view_tests.php的错误

你能帮我解决这个错误吗?我有没有得到价值如何变量无法识别?提前致谢。

2 个答案:

答案 0 :(得分:1)

语法高亮是一个死的赠品。检查以下行(以及原始代码段中的下面两行):

$grid->mSqlArr['where'] = " tests.test_duration = "."'"$duration"'"." ".$duration_in_sec;

你有一个字符串 - " tests.test_duration = "."'",然后你有一个变量$duration,然后是另一个字符串"'"." ".$duration_in_sec

如果你想将它们连接成一个字符串,你应该将$duration添加到字符串中,例如。

$grid->mSqlArr['where'] = " tests.test_duration = "."'".$duration."'"." ".$duration_in_sec;

(请注意.变量周围的额外$duration

答案 1 :(得分:0)

你正在构建错误的字符串

$grid->mSqlArr['where'] = " tests.test_duration = "."'"$duration"'"." ".$duration_in_sec;

应该是

$grid->mSqlArr['where'] = " tests.test_duration = '$duration' "  . $duration_in_sec;

虽然我不知道你正在努力建立什么是什么。但是你需要在每个字符串之间加.。另请注意,您可以将变量嵌入双引号字符串中,然后展开。