Guten Abend.
Ich stelle mit Hilfe von chart.js einen Graphen auf einer Website dar, 
der mit Daten einer Datenbank gefüttert wird. Das klappt auch dann, wenn 
ich zur Verbindung zur DB MySqli benutze (Skript unten). Wenn ich aber 
versuche die Verbindung mit PDO herzustellen, bleibt das div mit dem 
Graphen leer...
Den exakt gleichen PDO-Skript nutze ich an anderer Stelle der Website, 
um eine Tabelle zu füllen, und er funktioniert dort!
Ich kann mir leider nicht wirklich erkären, warum die 
Darstellung/Verbindung des Graphen mit der DB nur bei einer der beiden 
Methoden klappt.   Bis auf den Anfang mit der DB-Verbindung ist der Rest 
identisch!
Achso, ich würde gerne, da ich auch auf anderen Seiten und Projekten PDO 
nutze, auch lieber dieses Verfahren nutzen. Ich würde ungern, nur weil 
ich hierbei jetzt nicht den Fehler finde, genau einmal MySqli nutzen 
müssen...
PDO:
1  | <?php
  | 
2  | //setting header to json
  | 
3  | header('Content-Type: application/json');
 | 
4  | 
  | 
5  | // Zugangsdaten zur Datenbank 
  | 
6  | $DB_HOST = "localhost";
  | 
7  | $DB_NAME = "Abstand";
  | 
8  | $DB_USER = "Klieber";
  | 
9  | $DB_PASSWD = "...";
  | 
10  | 
  | 
11  | $OPTION = [
  | 
12  |   PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8mb4",
  | 
13  |   PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
  | 
14  |  ]; 
  | 
15  |  
  | 
16  |  try {
 | 
17  |  // Verbindung zur Datenbank aufbauen
  | 
18  |  $pdo = new PDO("mysql:host=" . $DB_HOST . ";dbname=" . $DB_NAME,
 | 
19  |   $DB_USER, $DB_PASSWD, $OPTION);
  | 
20  | }
  | 
21  | catch (PDOException $e) {
 | 
22  |  // Bei einer fehlerhaften Verbindung eine Nachricht ausgeben
  | 
23  |  exit("Verbindung fehlgeschlagen! " . $e->getMessage());
 | 
24  | }
  | 
25  | 
  | 
26  | //query to get data from the table
  | 
27  | $query1 = "SELECT ID, Abstand, Temperatur FROM Abstand WHERE (IndexMQTT = 1) AND (ID > 180) ORDER BY ID DESC";
  | 
28  | $query2 = "SELECT ID, Abstand FROM Abstand WHERE (IndexMQTT = 2) AND (ID > 180) ORDER BY ID DESC";
  | 
29  | 
  | 
30  | //execute query
  | 
31  | $result1 = $pdo->query($query1);
  | 
32  | $result2 = $pdo->query($query2);
  | 
33  | 
  | 
34  | 
  | 
35  | //loop through the returned data
  | 
36  | $data1 = array();
  | 
37  | foreach ($result1 as $row) {
 | 
38  |   $data1[] = $row;
  | 
39  | }
  | 
40  | 
  | 
41  | $data2 = array();
  | 
42  | foreach ($result2 as $row) {
 | 
43  |   $data2[] = $row;
  | 
44  | }
  | 
45  | 
  | 
46  | $datages = array($data1, $data2);
  | 
47  | 
  | 
48  | //free memory associated with result
  | 
49  | $result1->close();
  | 
50  | $result2->close();
  | 
51  | 
  | 
52  | //now print the data
  | 
53  | print json_encode($datages);
  | 
54  | 
  | 
55  | ?>
  | 
MySqli:
1  | <?php
  | 
2  | //setting header to json
  | 
3  | header('Content-Type: application/json');
 | 
4  | 
  | 
5  | //database
  | 
6  | define('DB_HOST', 'localhost');
 | 
7  | define('DB_USERNAME', 'Klieber');
 | 
8  | define('DB_PASSWORD', '...');
 | 
9  | define('DB_NAME', 'Abstand');
 | 
10  | 
  | 
11  | //get connection
  | 
12  | $mysqli = new mysqli(DB_HOST, DB_USERNAME, DB_PASSWORD, DB_NAME);
  | 
13  | 
  | 
14  | if(!$mysqli){
 | 
15  |   die("Connection failed: " . $mysqli->error);
 | 
16  | }
  | 
17  | 
  | 
18  | //query to get data from the table
  | 
19  | $query1 = sprintf("SELECT ID, Abstand, Temperatur FROM Abstand WHERE (IndexMQTT = 1) AND (ID > 180) ORDER BY ID DESC");
 | 
20  | $query2 = sprintf("SELECT ID, Abstand FROM Abstand WHERE (IndexMQTT = 2) AND (ID > 180) ORDER BY ID DESC");
 | 
21  | 
  | 
22  | //execute query
  | 
23  | $result1 = $mysqli->query($query1);
  | 
24  | $result2 = $mysqli->query($query2);
  | 
25  | 
  | 
26  | 
  | 
27  | //loop through the returned data
  | 
28  | $data1 = array();
  | 
29  | foreach ($result1 as $row) {
 | 
30  |   $data1[] = $row;
  | 
31  | }
  | 
32  | 
  | 
33  | $data2 = array();
  | 
34  | foreach ($result2 as $row) {
 | 
35  |   $data2[] = $row;
  | 
36  | }
  | 
37  | 
  | 
38  | $datages = array($data1, $data2);
  | 
39  | 
  | 
40  | //free memory associated with result
  | 
41  | $result1->close();
  | 
42  | $result2->close();
  | 
43  | 
  | 
44  | //close connection
  | 
45  | $mysqli->close();
  | 
46  | 
  | 
47  | //now print the data
  | 
48  | print json_encode($datages);
  | 
49  | ?>
  | 
Vielleicht kann mir ja jemand von euch weiterhelfen... :)