我在使用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." ");
我在做什麼錯?
我在使用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." ");
我在做什麼錯?
你爲什麼不計數表列通過將列名在您的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
是它輸出行的總數,是的我有計數cloumns的名稱,但問題是後在那裏,我有像那周3 --- 2和周3 ---- 2那樣的結果,所以我只想得到一個周3 – 2012-04-06 19:14:59
好吧,我得到它的工作thx – 2012-04-08 18:18:24
我猜$ww
指的是一個列的名稱。 $weekNumber
顯然是價值。在這種情況下,您的SQL查詢應該如下所示:
$sql3= mysql_query("SELECT COUNT(".$ww.") FROM data WHERE ".$ww." = ".$weeknumber." ");
我不是PHP傢伙,但我假設您擁有正確的PHP語法。
我建議你看看這個link。正如@Crontab提到的,我不確定爲什麼你在where子句前面有一個美元符號。
還有其他一些事情要指出: 正如它在鏈接中所說的,您將需要確保查詢文本已正確轉義。另外,如果我沒有弄錯(不熟悉PHP),你是否需要明確連接文本而不是使用引號? (即代替「SELECT ...」...「你需要做」SELECT ...「+」...「)
php字符串格式是完美的在這裏,把你凌亂的concat字符串和!使它清潔和可讀性
$sql3= mysql_query(sprintf("SELECT COUNT(%s) FROM data WHERE %s=%d", $ww, $ww, $weeknumber));
不工作:(。 – 2012-04-06 18:24:44
假設$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']}";
我認爲$ ww是一個變量,其值是列名 – Baz1nga 2012-04-06 18:14:18
錯誤mysql_fetch_assoc():提供的參數不是一個有效的MySQL結果資源 – 2012-04-06 18:31:14
爲什麼會有一個額外的美元符號只是'WHERE'後? – Crontab 2012-04-06 17:58:27
你知道變量嗎?$ ww。和。$ weeknumber在運行時正在評估? – contactmatt 2012-04-06 17:59:10
這額外的美元是使其成爲變量,koz $ ww正在回顯表中的行標題。 – 2012-04-06 18:01:24