Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/232.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 尝试将查询结果乘以总数 问题_Php_Mysql - Fatal编程技术网

Php 尝试将查询结果乘以总数 问题

Php 尝试将查询结果乘以总数 问题,php,mysql,Php,Mysql,我生成了一个查询,以确定每个房间的人均总成本和房间内的总人数;每个人的总成本正确返回,房间内的总人数也正确返回;然而,当我尝试对总数进行小乘法时,我只是得到了我想要乘法的数字的显示 例如: 每人价格=1207美元 房间内总人数=2人 查询结果。。。"1207*2" ... 问题: 我敢肯定这是件愚蠢或次要的事情,但可能需要第二双眼睛。如何重写下面的代码以生成所需的$2414结果 问题是: $tourquery=“选择t.roomprice,c.totpax 来自客户c,Tourt 其中c.ro

我生成了一个查询,以确定每个房间的人均总成本和房间内的总人数;每个人的总成本正确返回,房间内的总人数也正确返回;然而,当我尝试对总数进行小乘法时,我只是得到了我想要乘法的数字的显示

例如: 每人价格=1207美元 房间内总人数=2人 查询结果。。。"1207*2" ...

问题: 我敢肯定这是件愚蠢或次要的事情,但可能需要第二双眼睛。如何重写下面的代码以生成所需的$2414结果

问题是:
$tourquery=“选择t.roomprice,c.totpax
来自客户c,Tourt
其中c.roomtype1=t.roomtype1
c.tourstart=t.tourstart
和c.tourbk_id=t.touru id“;
$tourresult=$db->query($tourquery);
而($roomrate=mysqli\u fetch\u assoc($tourresult))
{
echo“人均金额:{$roomrate['roomprice']}
”; echo“房间总金额:{$roomrate['roomprice']}*{$roomrate['totpax']}
”; }
为什么不这样做:

while ($roomrate = mysqli_fetch_assoc($tourresult))
{
    $totalcost = $roomrate['roomprice'] * $roomrate['totpax'];
    echo "Per person amount : {$roomrate['roomprice']}<br />";
    echo "Total room amount : {$totalcost}<br />";
}
while($roomrate=mysqli\u fetch\u assoc($tourresult))
{
$totalcost=$roomrate['roomprice']*$roomrate['totpax'];
echo“人均金额:{$roomrate['roomprice']}
”; echo“房间总金额:{$totalcost}
”; }
这是因为您正在输出字符串。有多种方法可以解决此问题,包括以下内容:

while ($roomrate = mysqli_fetch_assoc($tourresult))
   {
$total_price = $roomrate['roomprice']*$roomrate['totpax'];
echo "Per person amount : {$roomrate['roomprice']}<br />";
echo "Total room amount : {$total_price}<br />";

}
while($roomrate=mysqli\u fetch\u assoc($tourresult))
{
$total_price=$roomrate['roomprice']*$roomrate['totpax'];
echo“人均金额:{$roomrate['roomprice']}
”; echo“房间总金额:{$Total_price}
”; }
你也可以很有想象力,让mySQL来计算

SELECT t.roomprice, c.totpax, (t.roomprice * c.totpax) AS total_price 
     FROM clients c, tourprices t 
     WHERE c.roomtype1 = t.roomtype 
     AND c.tourstart = t.tourstart
     AND c.tourbk_id = t.tour_id

但不确定你是否受到了性能上的打击。最后,我反反复复地讨论是让DB处理还是让PHP处理。

@shane如果这个答案解决了你的问题,你应该接受。一般来说,我反对在引号内加操作。我认为在外面计算要清楚得多。特别是当你有一个编辑器的好处,可以突出显示语法。如果可以的话尽量避免。嗨,代达罗斯,我是。。。Paddy在我问这个问题的41秒钟内就回答了,而这个网站似乎在答案发布后10分钟才允许接受答案。哈哈,41秒。。。那叫“突袭”@谢恩,我看不到速度问题。输出字符串比执行乘法慢得多。小心以牺牲清晰度的方式编码,不要过早地优化。我不了解PHP,但一般情况下,您会将琐碎的优化留给编译器。就专业的编码风格而言,我总是更喜欢最具描述性的代码。如果某个东西确实需要高度优化,那么它应该至少有和代码一样多的注释(有用的注释,说明为什么代码是这样,它是如何工作的,它克服了什么)。
SELECT t.roomprice, c.totpax, (t.roomprice * c.totpax) AS total_price 
     FROM clients c, tourprices t 
     WHERE c.roomtype1 = t.roomtype 
     AND c.tourstart = t.tourstart
     AND c.tourbk_id = t.tour_id