2013-04-17 33 views
0

我有以下代码,但我的mysql查询没有返回任何值。请告诉我,我做错了:在php中的mysql查询不读取php变量

foreach($stagearray as $catgry){ 
    echo $catgry;//this is returning the values 
    $sql = mysql_query(" 
     select 
      count(reference) as CCOUNTS, 
      assignee_group 
     from 
      issue_tracking_issues i, 
      issue_tracking_issues_issue_tracking_projects j 
     where 
      status NOT LIKE 'Closed%' 
      AND i.id=j.issue_tracking_issue_id 
      AND j.issue_tracking_project_id=1 
      and $value 
     having 
      SUBSTR(date_raised,3,3) 
     group by 
      assignee_group 
    "); 

    while($rows = mysql_fetch_array($sql)){ 

这是给我以下警告:

PHP的警告:mysql_fetch_array():提供的参数不是一个有效的MySQL结果资源

我猜测我的SQL查询无法解析$ catgry,但我不知道为什么

+0

我在您的查询中看不到'$ catgry'。 – showdev

+0

在'$ sql'字符串中看不到'$ catgry',但有一个变量'$ value' – Jrod

+0

但是'$ value' – Victor

回答

1

您不检查返回值mysql_query()。当mysql_query()由于任何原因失败时,它将返回false。当你把这个false值放入mysql_fetch_array()时,它当然会抱怨,因为它期望一个查询结果集,而不仅仅是一个false值。

添加至少or die(mysql_error());为了看看,有什么不对您的查询

$sql = mysql_query("select count(reference) as CCOUNTS,assignee_group from issue_tracking_issues...") or die(mysql_error()); 

望着查询,我猜的罪魁祸首可能是where子句中的havinghaving不能用这种方式作为运算符,因为它从group by集合中选择。这应该是

select ... from ... where ... group by ... having ... 

如果你想比较$value对一个串,使用比较运算符像=likeregexp

有关详细信息,请参阅SELECT Syntax

OT:mysql*现在已被弃用。考虑切换到mysqli*PDO