fetch_assoc php 中的 sql 查询出错

fetch_assoc error with sql query in php

我收到此错误:

Call to a member function fetch_assoc() on a non-object

当我使用此代码时:

$sql = ('select '.$metric1.' as t1metric from '.$table1.' t1 WHERE '.$date1.' between ('.$start_date.' AND '.$end_date.')');

但是当我使用它时它起作用了:

$sql = ("select t1.clicks as t1clicks from aaa t1 WHERE t1.date between ('2015-11-11 and '2015-11-10')");

我一开始以为是引号 " 和 ' 不同的问题,但事实证明我错了。

这是我的完整代码:

$servername = 'XXXXX';
$username = 'XXXXX';
$password = 'XXXXX';
$dbname = 'XXXXX';
$table1 = 'aaa';
$table2 = 'bbb';
$metric1 = 'clicks';
$metric2 = 'clicks';
$date1 = 'date';
$date2 = 'date';
$start_date = '2015-11-10';
$end_date = '2015-11-11';

$Db = mysqli_init();
$Db->options(MYSQLI_OPT_LOCAL_INFILE, true);
$Db->real_connect($servername, $username, $password, $dbname, 3306);

// Creation of SQL query
$sql = ("select t1.date, t1.clicks as t1clicks , t2.clicks as t2clicks from aaa t1, bbb t2 WHERE t1.date = t2.date AND t1.clicks != t2.clicks group by date");

// Run the query
$query = $Db->query($sql);

// 
while ($row = $query->fetch_assoc()) 
{
    echo sprintf("date: %s, aaa: %s, bbb: %s \n", $row['date'], $row['t1clicks'], $row['t2clicks']);
}

您收到错误的原因是您没有用引号将日期括起来。

WHERE '.$date1.' between ("'.$start_date.'" AND "'.$end_date.'")'); 会工作。

希望对您有所帮助!

干杯!