Php 左连接MYSQL返回false
我正在尝试执行MYSQL左连接查询,但遇到一个错误: 警告:mysqli_num_rows()要求参数1为mysqli_结果,布尔值在中给出。因为返回的查询为false 代码是:Php 左连接MYSQL返回false,php,mysql,left-join,Php,Mysql,Left Join,我正在尝试执行MYSQL左连接查询,但遇到一个错误: 警告:mysqli_num_rows()要求参数1为mysqli_结果,布尔值在中给出。因为返回的查询为false 代码是: $query = " SELECT a.page , SUM(b.views) views , ROUND(SUM(b.costs)/1.38,2) costs , ROUND(SUM(a.amount),2) REV , ROUND(SUM(a.amount) - SUM(b.
$query = "
SELECT a.page
, SUM(b.views) views
, ROUND(SUM(b.costs)/1.38,2) costs
, ROUND(SUM(a.amount),2) REV
, ROUND(SUM(a.amount) - SUM(b.costs)/1.38,2) PNL
FROM revenues a
LEFT
JOIN costs b
ON a.page = b.page
WHERE a.date BETWEEN '$start_date' AND '$end_date'
AND a.country = '$country'
AND b.date BETWEEN '$start_date' AND '$end_date'
GROUP
BY a.page";
$result = mysqli_query($connection,$query);
if ($result != false) {
$foundnum = mysqli_num_rows($result);
if ($foundnum == 0) {
echo 'No results found.';
}
} else {
echo 'returned false';
}
printQuery($result);
printQuery是me的一个函数,它创建一个html表
如果我对表进行两次单独的查询,我会得到正确的表。我分别提出以下问题:
$query = "SELECT page, round(sum(amount),2) as REV FROM revenues WHERE date between '$start_date' AND '$end_date' AND country = '$country' GROUP BY page" ;
$query2 = "SELECT page, sum(views) as views, round(sum(costs)/1.38,2) as costs FROM costs WHERE date between '$start_date' AND '$end_date' GROUP BY page";
有人能告诉我错误在哪里吗
表收入由以下列组成:
日期:日期
金额:浮动(如果没有收入,则为空)
国家:瓦查尔
表1列的成本余弦列表:
日期:日期
成本:浮动(始终>=0)
视图:int
谢谢以下是usless:
else {
echo 'returned false';
}
将其替换为以下内容:
else {
echo "Query failed.\nMySQLi error: " . mysqli_error();
}
您至少可以通过检查返回值获得分数,但至少出于开发目的,您需要让代码以描述性方式失败。您可以发布查询的vardump()吗:vardump($query);您是否尝试过执行echo mysqli_error();若要查看sql查询中是否存在使mysqli_query()返回false的错误,请使用“$result=mysqli_query($connection,$query)或die(mysqli_error($connection));”
WHERE
子句中b
上的谓词否定左连接操作的“外部性”,使其等效于内部连接。为了使其成为外部联接,可以将要求b
中的列为非null的谓词重新定位到ON子句中。但这并不能解释这个错误。对于调试,添加echo$query设置字符串后的代码>和echo mysqli_error()代码>后回显错误代码>。我看不出有语法问题。