使用where子句中的变量计数行

时间:2012-04-06 17:56:22

标签: php sql

我在SQL WHERE子句中使用变量时遇到问题。我收到了这个错误:

  

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

代码是:

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

我做错了什么?

5 个答案:

答案 0 :(得分:1)

为什么不通过将列名放在COUNT(column_name)中来计算表列?

像这样:

$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

答案 1 :(得分:0)

我猜$ww指的是列名。 $weekNumber显然是价值。在这种情况下,您的SQL查询应如下所示:

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

我不是一个PHP人,但我假设你有正确的PHP语法。

答案 2 :(得分:0)

我建议您查看此link。正如@Crontab所说,我不确定为什么你的where子句前面有一个美元符号。

还有几点需要指出: 正如链接中所说,您需要确保正确转义查询文本。另外,如果我没有弄错(不熟悉PHP)你是否需要显式连接文本而不是仅使用引号? (即代替“SELECT ...”......“你需要做”SELECT ...“+”......“)

答案 3 :(得分:0)

php字符串格式在这里是完美的,带走你混乱的concat字符串并使其干净和可读!

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

答案 4 :(得分: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']}";