我正在尝试查询一个 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'
)
显然这将始终是 2
或 0
。
您几乎肯定应该在数据库服务器上进行计数:
SELECT COUNT(*) FROM sites WHERE $day=1
但是请注意,您当前最大的问题是巨大的 SQL 注入(inject)漏洞。清理您的输入。
关于PHP array_sum 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8563546/