我在SQL WHERE子句中使用变量时遇到问题。我收到了这个错误:
警告:mysql_fetch_array():提供的参数不是有效的MySQL 结果资源
代码是:
$sql3= mysql_query("SELECT COUNT($ww) FROM data WHERE $".$ww." = ".$weeknumber." ");
我做错了什么?
答案 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']}";