catcher catcher - 21 days ago 6
MySQL Question

Making an Array from Database MySQL

I have database connection. I want to make an array but something is problem i think. Here is my array code:

$var = "SELECT SUBSTRING(KayitTarihi,1,4) AS year,SUBSTRING(KayitTarihi,6,2) AS month,SUBSTRING(KayitTarihi,9,2) AS day,SUBSTRING(KayitTarihi,12,2) AS saat,SUBSTRING(KayitTarihi,15,2) AS dakika,Guc FROM Urun WHERE Date(KayitTarihi)=\"".$link_m."\"";

$result = $mysqli->query($var);

$data = array();
foreach ($result as $row) {$data[] = $row;}

print_r($data);

$no=1;$total_deger=count($data);
echo $total_deger;

for($i=0;$i<$total_deger);$i++){
$xxx[i]="[Date.UTC(".$data[i]['year'].",".$data[i]['month'].",".$data[i]['day'].",".$data[i]['saat'].",".$data[i]['dakika'].",00),".$data[i]['Guc']."]";if($no < $total_deger){echo ",";}
echo $xxx[i];
}


When I run this code, nothing happens in page. When I write to for example 0 for i. I can see my array value. Where do I mistake?

Answer

Code with correction and suggestion (both are commented):-

<?php
error_reporting(E_ALL); // check all errors
ini_set('display_errors',1);// display those errors
$var = "SELECT SUBSTRING(KayitTarihi,1,4) AS year,SUBSTRING(KayitTarihi,6,2) AS month,SUBSTRING(KayitTarihi,9,2) AS day,SUBSTRING(KayitTarihi,12,2) AS saat,SUBSTRING(KayitTarihi,15,2) AS dakika,Guc FROM Urun WHERE Date(KayitTarihi)=\"".$link_m."\"";

$result = $mysqli->query($var);

$data = array();

if ($result->num_rows > 0) { // check you got results or not
    while($row = $result->fetch_assoc()) { 
        $data[] = $row; // assign them
    }
}

//foreach ($result as $row) {$data[] = $row;} // not needed 

print_r($data);

$no=1;

$total_deger= count($data);

echo $total_deger;

for($i=0;$i<$total_deger;$i++){ // remove )

$xxx[$i]="[Date.UTC(".$data[$i]['year'].",".$data[$i]['month'].",".$data[$i]['day'].",".$data[$i]['saat'].",".$data[$i]['dakika'].",00),".$data[$i]['Guc']."]"; // use $i  instead of i
if($no < $total_deger)
{
    echo ",";
}
echo $xxx[$i];

}

Note:- Always add some error reporting code. So that all errors will populated and you can rectify those

Also better would be to use foreach() instead of for loop (as it will take care of indexes itself):-

//use foreach
foreach ($data as $dat){
    echo "[Date.UTC(".$data['year'].",".$data['month'].",".$data['day'].",".$data['saat'].",".$data['dakika'].",00),".$data['Guc']."]";
}