2013-04-17 75 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