Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用变量从php mysql中的两个表中减去_Php_Mysql - Fatal编程技术网

如何使用变量从php mysql中的两个表中减去

如何使用变量从php mysql中的两个表中减去,php,mysql,Php,Mysql,我从我的第一个表(income)中得到了这个总数,我想从另一个表(exp)查询中减去它。所有这些代码都在同一页上。那么,我如何使用这些查询变量在同一页上但在另一个位置减去并回显结果呢? 问题1 在回显总销售额后,将$row['SUM(inamount)'的值分配给变量,您可以使用该值执行减法: ... $var=$row['SUM(inamount)']; ... //after printing total expenditure echo "Total Profit = ". ($var-

我从我的第一个表(income)中得到了这个总数,我想从另一个表(exp)查询中减去它。所有这些代码都在同一页上。那么,我如何使用这些查询变量在同一页上但在另一个位置减去并回显结果呢? 问题1


在回显总销售额后,将$row['SUM(inamount)'的值分配给变量,您可以使用该值执行减法:

...
$var=$row['SUM(inamount)'];
...
//after printing total expenditure
echo "Total Profit  = ". ($var-$row['SUM(amount)']);
2尽管如此,观察结果如下: 1.mysql库已经不推荐使用,请改用mysqli或PDO。
2.如果两段代码在同一页中,则不需要包含db.php两次。

检查数据类型是否设置为int

$myVar = $row['SUM(inamount)'] - $row['SUM(amount)'];
echo $myVar;
另一种方法是将两个值分配给各自的变量,然后执行计算:

$totalSales = $row['SUM(inamount)'];
$expense = $row['SUM(amount)'];

$actual = $totalSales - $expense;

echo $actual;
使用var_dump()将告诉您$row变量中实际包含的值。这将为您提供有关数据是否正确地从数据库拉入变量的线索

var_dump($row['SUM(inamount)']);
var_dump($row['SUM(amount)']);
另一件需要检查的事情是,实际变量是否设置得如此全面,解决方案可能如下所示:

<?php 
include("db.php");

//query 1
$query_income = "SELECT source, SUM(income.inamount) FROM income"; 
$result_income = mysql_query($query_income) or die(mysql_error());
while($row = mysql_fetch_array($result_income)){
$inamount = $row['inamount'];
}

//query 2
$query_exp = "SELECT amount, SUM(exp.amount) FROM exp"; 
$result_exp = mysql_query($query_exp) or die(mysql_error());
while($row = mysql_fetch_array($result_exp)){
$amount = $row['amount'];
}

if(isset($inamount, $amount))  {
 $actual = $amount - $inamount;
 echo $actual // obviously you format $actual to your preferred     output
 }
 else {
   echo "Variable data not set";
 }
?>

我的最佳建议应该是只进行一次查询并在查询中处理减法,您可以按如下方式进行:

<?php 
include("db.php");
$query = "SELECT inc.source, SUM(inc.inamount) as in_amount, SUM(exp.amount) as out_amount, SUM(inc.inamount)-SUM(exp.amount) as total FROM income as inc, exp"; 
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
echo "Total Sales  = N". $row['in_amount'];
echo "<br />";
echo "Expenditure Sales  = N". $row['out_amount'];
echo "<br />";
echo "Total after substraction  = N". $row['total'];
echo "<br />";
}
?>
<?php 
include("db.php");
$query = "SELECT source, SUM(inamount) as in_amount FROM income"; 
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
$total_sales = $row['in_amount'];
echo "Total Sales  = N". $row['in_amount'];
echo "<br />";
}
?>

<?php
include("db.php");
$query = "SELECT SUM(amount) as out_amount FROM exp"; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
$total_expenditure = $row['out_amount'];
echo "Total Expenditure  = N". $row['out_amount'];
echo "<br />";
}
?>

<?php
$total = $total_sales - $total_expenditure;
echo "Total after substract = N". $total;
echo "<br />";
?>

但是,如果您严格希望使用变量进行减法,那么可以如下所示:

<?php 
include("db.php");
$query = "SELECT inc.source, SUM(inc.inamount) as in_amount, SUM(exp.amount) as out_amount, SUM(inc.inamount)-SUM(exp.amount) as total FROM income as inc, exp"; 
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
echo "Total Sales  = N". $row['in_amount'];
echo "<br />";
echo "Expenditure Sales  = N". $row['out_amount'];
echo "<br />";
echo "Total after substraction  = N". $row['total'];
echo "<br />";
}
?>
<?php 
include("db.php");
$query = "SELECT source, SUM(inamount) as in_amount FROM income"; 
$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
$total_sales = $row['in_amount'];
echo "Total Sales  = N". $row['in_amount'];
echo "<br />";
}
?>

<?php
include("db.php");
$query = "SELECT SUM(amount) as out_amount FROM exp"; 

$result = mysql_query($query) or die(mysql_error());

// Print out result
while($row = mysql_fetch_array($result)){
$total_expenditure = $row['out_amount'];
echo "Total Expenditure  = N". $row['out_amount'];
echo "<br />";
}
?>

<?php
$total = $total_sales - $total_expenditure;
echo "Total after substract = N". $total;
echo "<br />";
?>


您想使用什么选项取决于您,但我建议不要进行两个不同的查询以获得两个值,因为它们可能在一个时间范围内发生变化。

感谢您的回答,但这里有一点冲突;总收入表列为7000,而总支出表列为3000。从您的解决方案中,结果返回0。i、 e
$row['SUM(inamount)]
是7000,而
$row['SUM(amount)]
是3000Pls,Mysql数据类型在这里起作用了吗。因为所有这些解决方案的结果都是0。这些表中的两列是Varchar作为数据类型,这样正确吗?
$totalSales=$row['SUM(inamount)'$费用=$行['总额(金额)']$实际值=$totalSales-$expense;echo$actual
返回错误的结果,即使数据类型设置为int,您是否将数据类型更改为int?是的,在包含图形的所有两个表中感谢您的回答。请解释一下我不明白。你到底不明白什么?对不起,我明白了。但是那些列应该有什么样的精确数据类型才能得到准确的结果呢?已经更新了我的答案。我会将数据类型设置为intNumeric Value应该存储数字,而不是文本,因此如果需要存储小数,请使用整数数据类型或decimal。在另一个位置意味着在另一个文件中?请注意数据库中的数据类型,您可以做的是在每个表中添加一个新列,例如inamount_int和amount_int,然后需要将varchar列强制转换为int,并将int值保存到创建的新列中。要转换其中一个,您可以执行更新收入集inamount_int=cast(inamount为UNSIGNED);不客气。请记住选择最好的答案,这样可以帮助其他人知道哪一个是最好的解决方案。最好的答案是耶稣·弗洛雷斯的答案。“我最好的建议应该是只提出一个查询,并在查询中处理减法。虽然他的两个答案都很有效,但第一个答案更有效,正如他所说。谢谢