У меня есть три предложения, основанные на моем опыте с кросс-браузерными или javascript-ошибками, которые я решил.
Первый пункт: вы просто повторяете , вам необходимо использовать объединение .
<?php
$data = '';
while($row=$res->fetch_assoc())
{
$data .= "['".$row['expense']."','".$row['income']."'],";
}
?>
var data = google.visualization.arrayToDataTable([
['expense','income'],
<?php echo $data; ?>
]);
второй пункт: в javascript последняя запятая может работать или не работать, лучше не добавлять запятую, если это последняя строка.
var data = google.visualization.arrayToDataTable([
['expense','income'],
<?php
while($row=$res->fetch_assoc())
{
if(last row )
$data .= "['".$row['expense']."','".$row['income']."']";
else $data .= "['".$row['expense']."','".$row['income']."'],";
}
?>
]);
третье предложение: проверить тип данных var data до и после объединения