PHP array_sum 不工作

标签 php mysql

我正在尝试查询一个 SQL 表,然后使用 array_sum 将一列(它是一个“tinyint(1)”)中的所有值相加并打印出来。 (目前只有两行)。

当两行在该列中都有一个“1”时,它会给出 2,即正确答案。当它们都为“0”时,它给出 0,再次更正。但是当一个是“1”,一个是“0”时,它给出 2,而不是 1。

这是我的代码

<code>$con = mysql_connect("XXX","XXX","XXX");

if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("XXX_test", $con);

$day = $_GET["day"];

$query = mysql_query("SELECT $day FROM sites");

if (!$query)
  {
  die('Could not query: ' . mysql_error());
  }

$rows = mysql_fetch_array($query);

echo array_sum($rows);

mysql_close($con);
</code>

?>

感谢您的帮助。

--更新--
我自己解决了这个问题。

有了这个,如果你想知道: $query = mysql_query("SELECT name, SUM($day) AS Alerts FROM sites");

while($row = mysql_fetch_array($query))
  {
  echo $row['Alerts'];
  echo "<br />";
  }

最佳答案

这实际上从不 正常工作。

$rows = mysql_fetch_array($query);

该行只获取第一行。永远不会检索到第二行。

它使用 array_sum 给出 2 的原因是 mysql_fetch_array 以两种不同的格式获取结果,键名和数字。所以你会得到这样的东西:

array(
    0 => '1',
    'Tuesday' => '1'
)

显然这将始终是 20

您几乎肯定应该在数据库服务器上进行计数:

SELECT COUNT(*) FROM sites WHERE $day=1

但是请注意,您当前最大的问题是巨大的 SQL 注入(inject)漏洞。清理您的输入。

关于PHP array_sum 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563546/

相关文章:

javascript - 使用 glob() 的 php/html5 播放列表

mysql - 选择具有 MAX(ad_number) 问题的查询

python - 操作错误 : (1054, "Unknown column ' ' 在 'where clause' 中”)

php - 在 laravel 中播种时出现质量分配错误

php - 使用 Zend Framework 向多个订阅者发送电子邮件

php - 如何正确地将css文件添加到php和html?

php - ini 文件未正确准备好

mysql - 在 Ruby on Rails 中检查行是否存在

mysql - 何时在 MySQL 中使用单引号、双引号和反引号

mysql - 错误 #1265 - 无法在默认 'none' 字段中插入空值