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... :)