我使用php和mysql创建一个页面,显示我们在数据库中的所有作业。显示的数据是一个表,当单击一行时,模态窗口会触发其中单击的作业的信息。在页面的顶部,我想要一个简单的计数器,显示付费工作量,发票工作等等。我使用下面的代码,但没有运气...
<?php
$con = mysql_connect("localhost","databaseusername","password");
if (!$con) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db("databasename", $con);
$result = mysql_query("select count(1) FROM jobslist");
$row = mysql_fetch_array($result);
$total = $row[0];
mysql_close($con);
?>
据我所知,此代码将INT列的数量设置为1而不是0.无论我尝试什么,我似乎都无法计算出已支付的金额&#39; #39;数据库中的项目或“已开发票”&#39;等等。
一旦计数功能完成,我现在回应结果如下:
<?php echo "" . $total;?>
我确信我忽视了一些简单的事情,但感谢任何帮助。
编辑:包含的表格结构
答案 0 :(得分:2)
select count(1) FROM jobslist
据我所知,此代码计算INT列的数量设置为1而不是0。
不,这只是计算表中的行而不是过滤。如果您想使用特定过滤器计算某些内容,则必须添加该过滤条件:
SELECT COUNT(*) AS `MyCount`
FROM `joblist`
WHERE `MyColumn` = 1; -- assuming MyColumn contains the INT you're looking for
你应该stop using mysql_*
functions。已在PHP 7中删除These extensions。了解prepared和PDO的MySQLi语句,并考虑使用PDO,it's really pretty easy。
答案 1 :(得分:0)
当我这样做时,我通常将COUNT
结果命名为。试试这个:
$result = mysql_query("SELECT COUNT(*) AS total_rows FROM jobslist;");
$row = mysql_fetch_array($result);
$total = $row['total_rows'];
如果您不想为COUNT
结果命名,请提供以下内容:
$result = mysql_query("SELECT COUNT(*) FROM jobslist;");
$row = mysql_fetch_array($result);
$total = $row['COUNT(*)'];
答案 2 :(得分:0)
假设有一个名为paid
的列,您可以重构查询,类似于以下内容。如果你需要总结所需的金额,需要进一步调整。
$result = mysql_query("select
( select count(*) from `jobslist` where `paid`=1 ) as 'paid',
( select count(*) from `jobslist` where `paid`=0 ) as 'unpaid'
from jobslist");
$rows = mysql_num_rows( $result );
while( $rs=mysql_fetch_object( $result ) ){
$paid=$rs->paid;
$unpaid=$rs->unpaid;
echo 'Total: '.$rows.'Paid: '. $paid.' Unpaid: '.$unpaid;
}
答案 3 :(得分:0)
首先,您应该将已弃用的mysql_...
更改为mysqli_...
(查看here如何)。但这并不是你失败的原因。
与您的假设不同,COUNT(1)
不会查找值为1的INT列。
相反,您必须使用COUNT(*)
或COUNT(a_column_name)
(相同的结果),添加WHERE
条款,说明涉及哪个条件。
在这里,你似乎想要计算给定列(比如the_column
)的值为1的记录。所以你应该:
SELECT COUNT(*)
FROM jobslist
WHERE the_column = 1
最后一点:echo "" .
中您不需要<?php echo "" . $total;?>
仅写<?php echo $total;?>
。