SQL Query for 30 unique variables
I am pulling out data that counts the number of user registrations for each of the last 30 days. This data is converted to Json for googlechart.
I'm wondering if there is a more efficient way to get the data I'm looking for rather than 30 separate queries.
Here's my data flow and working code.
SQL Query Per # registrations from day (today, yesterday, total up to 30 days ago) → PHP Variable → Json → GoogleChart
SQL QUERY
$mysqli=mysqli_connect("localhost","root","","db");
if (mysqli_connect_errno()){echo "Failed to connect to MySQL: " . mysqli_connect_error();}
$query_a = "SELECT * FROM wp_users WHERE user_registered BETWEEN DATE_SUB(NOW(), INTERVAL 1 day) AND NOW()";
$result_a = mysqli_query($mysqli,$query_a);
$row_a = mysqli_num_rows($result_a);
$query_b = "SELECT * FROM wp_users WHERE user_registered BETWEEN DATE_SUB(NOW(), INTERVAL 2 day) AND DATE_SUB(NOW(), INTERVAL 1 day)";
$result_b = mysqli_query($mysqli,$query_a);
$row_b = mysqli_num_rows($result_b);
mysqli_close($mysqli);
Json
$col1=array();
$col1["id"]="";
$col1["label"]="";
$col1["pattern"]="";
$col1["type"]="string";
//print_r($col1);
$col2=array();
$col2["id"]="";
$col2["label"]="Registrations";
$col2["pattern"]="";
$col2["type"]="number";
//print_r($col2);
$cols = array($col1,$col2);
//print_r($cols);
// Today
$cell0["v"]=date('M-d');
$cell1["v"]=$row_a;
$row0["c"]=array($cell0,$cell1);
//Yesterday
$cell0["v"]=date('M-d', strtotime('-1 day'));
$cell1["v"]=1;
$row1["c"]=array($cell0,$cell1);
$rows=array();
array_push($rows,$row4);
array_push($rows,$row3);
$data=array("cols"=>$cols,"rows"=>$rows);
//print_r($data);
echo json_encode($data);
Fix - Updated working SQL query
$query = "SELECT DISTINCT date(user_registered) as date, count(*) as cnt
FROM wp_users
WHERE date(user_registered) BETWEEN DATE_SUB(date(NOW()), INTERVAL 2 month) AND date(NOW())
GROUP BY date(user_registered)
";
$result = mysqli_query($mysqli,$query) or die;
$data = array();
while($row = mysqli_fetch_assoc($result))
{ $data[] = $row; }
print_r($data)
?>
+3
source to share
2 answers