steph99999 Ответов: 1

Фатальная ошибка: неперехваченная ошибка: вызов функции-члена 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)
{
// ...
}

1 Ответов

Рейтинг:
1

Richard MacCutchan

Видеть PHP: PDOStatement::execute - Manual[^]. Вы можете только execute правильно сформированный объект PDO, а не простая строка.


steph99999

так что же мне делать, чтобы получить эти данные ?

Richard MacCutchan

Перейдите по ссылке, которую я вам дал, и изучите документацию. Если вы хотите использовать какой-либо продукт, то вам нужно изучить и понять правила; просто копирование кода из интернета-это пустая трата времени.