2012-04-06 66 views
1

我在使用SQL WHERE子句中使用變量時遇到了問題。我得到這個錯誤:使用where子句中的變量來計算行

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource

的代碼是:

$sql3= mysql_query("SELECT COUNT($ww) FROM data WHERE $".$ww." = ".$weeknumber." "); 

我在做什麼錯?

+2

爲什麼會有一個額外的美元符號只是'WHERE'後? – Crontab 2012-04-06 17:58:27

+0

你知道變量嗎?$ ww。和。$ weeknumber在運行時正在評估? – contactmatt 2012-04-06 17:59:10

+0

這額外的美元是使其成爲變量,koz $ ww正在回顯表中的行標題。 – 2012-04-06 18:01:24

回答

1

你爲什麼不計數表列通過將列名在您的COUNT(列名)?

像這樣:

$sql3= mysql_query("SELECT COUNT(week_num) as wknum FROM data WHERE '$ww' = '$weeknumber'"); 
$counted_weeks["week_num"] 

// $counted_weeks["week_num"] will output your sum 
//week_num would be a column name from your "data" table 
+0

是它輸出行的總數,是的我有計數cloumns的名稱,但問題是後在那裏,我有像那周3 --- 2和周3 ---- 2那樣的結果,所以我只想得到一個周3 – 2012-04-06 19:14:59

+0

好吧,我得到它的工作thx – 2012-04-08 18:18:24

0

我猜$ww指的是一個列的名稱。 $weekNumber顯然是價值。在這種情況下,您的SQL查詢應該如下所示:

$sql3= mysql_query("SELECT COUNT(".$ww.") FROM data WHERE ".$ww." = ".$weeknumber." "); 

我不是PHP傢伙,但我假設您擁有正確的PHP語法。

+0

是它的coloumnname,但你的代碼沒有工作,現在根本沒有計數 – 2012-04-06 18:07:20

+0

你可以將查詢分配給一個字符串,並告訴我它的輸出..類似於$ sqlToRun =「SELECT COUNT(」。$ ww。「)FROM數據WHERE「。$ ww。」=「。$ weeknumber。」「; 告訴我$ sqlToRun – Baz1nga 2012-04-06 18:12:27

+0

中的值,並確保你有一個表中的數據與_data_在它..:/ – Baz1nga 2012-04-06 18:13:30

0

我建議你看看這個link。正如@Crontab提到的,我不確定爲什麼你在where子句前面有一個美元符號。

還有其他一些事情要指出: 正如它在鏈接中所說的,您將需要確保查詢文本已正確轉義。另外,如果我沒有弄錯(不熟悉PHP),你是否需要明確連接文本而不是使用引號? (即代替「SELECT ...」...「你需要做」SELECT ...「+」...「)

0

php字符串格式是完美的在這裏,把你凌亂的concat字符串和!使它清潔和可讀性

$sql3= mysql_query(sprintf("SELECT COUNT(%s) FROM data WHERE %s=%d", $ww, $ww, $weeknumber)); 
+0

不工作:(。 – 2012-04-06 18:24:44

0

假設$ww是一個有效的列名和$weekNumber是一個整數,這應該工作:

$query = "SELECT COUNT(*) AS cnt FROM data WHERE $ww = '$weekNumber'"; 
$rs = mysql_query($query); 
$r = mysql_fetch_assoc($rs); 
echo "Count: {$r['cnt']}"; 
+0

我認爲$ ww是一個變量,其值是列名 – Baz1nga 2012-04-06 18:14:18

+0

錯誤mysql_fetch_assoc():提供的參數不是一個有效的MySQL結果資源 – 2012-04-06 18:31:14

相關問題