我在我的 SQL WHERE 子句中使用变量时遇到问题。我收到此错误:
警告:mysql_fetch_array():提供的参数不是有效的 MySQL 结果资源
代码是:
$sql3= mysql_query("SELECT COUNT($ww) FROM data WHERE $".$ww." = ".$weeknumber." ");
我究竟做错了什么?
为什么不通过将列名放在 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
我猜$ww
是指一个列名。$weekNumber
显然是价值。在这种情况下,您的 SQL 查询应如下所示:
$sql3= mysql_query("SELECT COUNT(".$ww.") FROM data WHERE ".$ww." = ".$weeknumber." ");
我不是 PHP 人,但我假设你有正确的 PHP 语法。
我建议查看此链接。正如@Crontab 提到的,我不确定为什么你的 where 子句前面有一个美元符号。
需要指出的其他几件事:正如链接中所说,您需要确保查询文本已正确转义。另外,如果我没记错(不熟悉 PHP),您是否需要明确连接文本而不是仅使用引号?(即,而不是“SELECT ...” ...“你需要做“SELECT ...”+“...”)
php 字符串格式化在这里是完美的,把你混乱的 concat 字符串,让它干净易读!
$sql3= mysql_query(sprintf("SELECT COUNT(%s) FROM data WHERE %s=%d", $ww, $ww, $weeknumber));
假设这$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']}";