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.'")');
会工作。
希望对您有所帮助!
干杯!
我收到此错误:
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.'")');
会工作。
希望对您有所帮助!
干杯!