Фатальная ошибка: неперехваченная ошибка: вызов функции-члена execute() on string
Я попытался получить данные из базы данных mysql с помощью php pdo. и я встречаю это
Я хочу показать круговую диаграмму
Что я уже пробовал:
<!DOCTYPE html> <html> <head> <title>Show Graph</title> <style> table, th, td { border: 1px solid black; text-align:left; } .button { background-color: white; border: 1px solid #99C5E4 ; color: black; padding: 5px 14px; text-align: center; text-decoration: none; display: inline-block; font-size: 16px; margin: 4px 2px; cursor: pointer; } .button:hover { background-color: #99C5E4 ; color: white; } table { font-family: arial, sans-serif; border-collapse: collapse; width: 20%; } td, th { border: 1px solid #AEB6BF ; text-align: left; padding: 4px; } .myDiv { padding:20px; background-color:#C6E1F4 ;"; } </style> </head> <body> <div class="myDiv"></div><br> <center> <?php // DB credentials. define('DB_HOST','localhost'); define('DB_USER','root'); define('DB_PASS',''); define('DB_NAME','srms'); // Establish database connection. try { $dbh = new PDO("mysql:host=".DB_HOST.";dbname=".DB_NAME,DB_USER, DB_PASS,array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES 'utf8'")); array( \PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, \PDO::ATTR_PERSISTENT => false); $handle= "SELECT name,COUNT(*) as AMOUNT FROM tblclaim WHERE rollid = 'CB18094' GROUP BY name"; $handle->execute(); $result = $handle->fetchAll(\PDO::FETCH_OBJ); foreach($result as $row){ array_push($tblclaim, array("name"=> $row->name, "rollid"=> $row->rollid)); } $dbh = null; } catch (PDOException $e) { exit("Error: " . $e->getMessage()); } ?> <div id="piechart"></div> <script type="text/javascript" src="https://www.gstatic.com/charts/loader.js"></script> <script type="text/javascript"> // Load google charts google.charts.load('current', {'packages':['corechart']}); google.charts.setOnLoadCallback(drawChart); // Draw the chart and set the chart values function drawChart() { var data = google.visualization.arrayToDataTable([ ['NAME', 'Amount'], <?php while($row=mysqli_fetch_assoc($result)){ echo "['".$row["NAME"]."', ".$row["AMOUNT"]."],"; } ?> ]); // Optional; add a title and set the width and height of the chart var options = {'title':'Claim Merit Based On Event', 'width':550, 'height':400}; // Display the chart inside the <div> element with id="piechart" var chart = new google.visualization.PieChart(document.getElementById('piechart')); chart.draw(data, options); } </script> </center> <div class="myDiv"></div><br> </body> </html>
0x01AA
Сделай что-нибудь вроде этого:
$sql = "SELECT ... ";
foreach ($dbh->query($sql) as $row)
{
// ...
}