mysql_fetch_array wird nicht erstellt

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • mysql_fetch_array wird nicht erstellt

    Hallo zusammen,
    ich versuche gerade die mysql Daten meiner Wetterstation so aufzubereiten, das diese mittels data.php für highcharts zur Verfügung stehen.
    Die Datenbankanbindung (als Test) selbst klappt und auch Daten als html in table Form werden ausgegeben. (Bild u. Datenstruktur im Anhang.)

    Ich habe mir aus verschieden Foren Input geholt und versuche nun das ganze in die Gänge zu bekommen, allerdings reichen meine php und mysql Kenntnisse nicht mehr aus …..
    HTML-Code:
    <?php
    
    $servername = „xxxxxxx.de";
    
    // REPLACE with your Database name
    $dbname = "mqtt-weather";
    // REPLACE with Database user
    $username = "ESP32";
    // REPLACE with Database user password
    $password = "Espxxxxxx";
    
    // Create connection
    $conn = new mysqli($servername, $username, $password, $dbname);
    // Check connection
    if ($conn->connect_error) {
        die("Connection failed: Please Check your Credentials..... " . $conn->connect_error);
    } 
    $result = mysql_query($sql = "SELECT * FROM `wind` WHERE  timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 3 hour))");
    
    while($row = mysql_fetch_array($result)) {
      echo $row['timestamp'] . "\t" . $row['value0']. "\n";
    }
    
    mysql_close($con);
    ?>


    Bin für jeden Tip dankbar…. Vielen Dank
    Angehängte Dateien

  • #2
    Vielleicht beschreibst du mal das Problem.

    Kommentar


    • #3
      Auf jeden Fall kombinierst du schon einmal mysqli und mysql Funktionen. Das ist eher ungünstig, weil das zwei unterschiedliche paar Schuhe sind.
      carpe noctem

      Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht!
      Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung!

      Kommentar


      • #4
        wenn ich data.php aufrufe und z.B. einen Fehler bei den Zugangsdaten einbaue, erhalte ich zB.:
        Connection failed: Please Check your Credentials..... Access denied for user 'ESP32'@'p5B1760DF.dip0.t-ipconnect.de' (using password: YES)

        Da die Verbindung zur DB steht würde ich meht erwarten…. auch wenn meine Prog falsch ist …oder liege ich damit falsch?

        Kommentar


        • #5
          Zitat von goth Beitrag anzeigen
          Auf jeden Fall kombinierst du schon einmal mysqli und mysql Funktionen. Das ist eher ungünstig, weil das zwei unterschiedliche paar Schuhe sind.
          Code:
          <?php
          
          $servername = „localhost";
          
          // REPLACE with your Database name
          $dbname = "mqtt-weather";
          // REPLACE with Database user
          $username = "ESP32";
          // REPLACE with Database user password
          $password = "Esp32xxxxx";
          
          // Create connection
          $conn = new mysqli($servername, $username, $password, $dbname);
          // Check connection
          if ($conn->connect_error) {
              die("Connection failed: Please Check your Credentials..... " . $conn->connect_error);
          } 
          $result = mysql_query($sql = "SELECT * FROM `wind` WHERE  timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 3 hour));");
          
          while($row = mysql_fetch_array($result)) 
          {
            echo $row['timestamp'] . "\t" . $row['value0']. "\n";
          }
          $result = array();
              array_push($result,$rows);
              print json_encode($result, JSON_NUMERIC_CHECK);
          
          mysql_close($con);
          ?>
          Habe jetz mal ein anderes Schript probiert selber Fehler...

          Kommentar


          • #6
            Zitat von goth Beitrag anzeigen
            Auf jeden Fall kombinierst du schon einmal mysqli und mysql Funktionen. Das ist eher ungünstig, weil das zwei unterschiedliche paar Schuhe sind.
            Hallo goth, hab mal mysqli verwendet nun bekomme ich Null als Rückmeldung, ist schon mehr al nix…

            HTML-Code:
            <?php
            
            $servername = „localhost";
            
            // REPLACE with your Database name
            $dbname = "mqtt-weather";
            // REPLACE with Database user
            $username = "ESP32";
            // REPLACE with Database user password
            $password = "Esp32xxxxx";
            
            // Create connection
            $conn = new mysqli($servername, $username, $password, $dbname);
            // Check connection
            if ($conn->connect_error) {
                die("Connection failed: Please Check your Credentials..... " . $conn->connect_error);
            } 
            $result = mysqli_query($sql = "SELECT * FROM `wind` WHERE  timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 3 hour));");
            
            while($row = mysqli_fetch_array($result)) 
            {
              echo $row['timestamp'] . "\t" . $row['value0']. "\n";
            }
            $result = array();
                array_push($result,$rows);
                print json_encode($result, JSON_NUMERIC_CHECK);
            
            mysql_close($con);
            ?>
            Vermutlich ist die Abfrage meiner table nicht korrekt…..
            Wie kann das eventuell testen?

            Kommentar


            • #7
              Du kannst dein Query ja mal in PHPMyAdmin oder HeidiSQL testen. Und auf jeden Fall die Fehlerausgabe aktivieren:

              Code:
              mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);

              Kommentar


              • #8
                Zitat von chorn Beitrag anzeigen
                Du kannst dein Query ja mal in PHPMyAdmin oder HeidiSQL testen. Und auf jeden Fall die Fehlerausgabe aktivieren:

                Code:
                mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
                Hallo chorn,
                Vielen Dank für den Tip, habe den Befehl:
                Code:
                mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
                in die mqtt.data.php gepackt nun bekomme ich Array angezeigt.

                Das ist mein aktuelles PHP Script, im Anhang die Übersicht der Tabelle.

                Ich bin Anfänger im PHP, deswegen gehe ich mal davon aus, das dass Problem vor dem Rechner sitzt.

                Ich benötige ein Array z.B. Tabelle wind row timestamp + value0.

                Ich habe leider noch kein HowTo im Netz gefunden was mich hier weiterbringt
                und auch ehrlich keinen Plan wie ich an die Daten komme.


                Wäre dankbar für jede Unterstützung und sei es ein gutes Howto.
                Vielen Dank

                HTML-Code:
                <?php
                  include_once 'mqtt-data.php';
                ?>
                
                <!DOCTYPE html>
                <html>
                <head>
                  <title> </title>
                </head>
                <body>
                
                <?php
                    
                	$sql = "SELECT * FROM `wind` WHERE  timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 2 hour));";
                    $result = mysqli_query ($conn, $sql);
                    $resultCheck = mysqli_num_rows($result);
                    
                    if ($resultCheck > 0) {
                      while ($row = mysqli_fetch_assoc ($result)) {
                        echo $row =['value0'] . "<br>";
                    }
                  }
                ?>
                
                </body>
                </html>
                Angehängte Dateien

                Kommentar


                • #9
                  Söderle, nun funktioniert es anbei das funktionierende Script.
                  Bilder im Anhang als Nachweis

                  Vielleicht kann ich damit irgendwann jemand andern inspizieren


                  PHP-Code:
                  <?php
                    
                  include_once 'mqtt_data_ok.php';
                  ?>

                  <!DOCTYPE html>
                  <html>
                  <head>
                    <title> </title>
                  </head>
                  <body>

                  <?php
                      
                      $sql 
                  "SELECT * FROM `wind` WHERE  timestamp > TIMESTAMP(DATE_SUB(NOW(), INTERVAL 3 hour));";
                      
                  $result mysqli_query ($conn$sql);
                      
                  $resultCheck mysqli_num_rows($result);
                      
                      if (
                  $resultCheck 0) {
                        while (
                  $row mysqli_fetch_assoc ($result)) {
                          echo 
                  $row['timestamp'] . "\t" $row['value0']. "\n";
                      }
                    }
                    
                    
                  $result = array();
                      
                  array_push($result,$rows);
                      print 
                  json_encode($resultJSON_NUMERIC_CHECK);
                  ?>

                  </body>
                  </html>
                  Angehängte Dateien

                  Kommentar


                  • #10
                    d.h. wenn ich die Einträge dieser Seite richtig verstehe ...

                    (mein Problem ist ähnlich, ich schrieb vor 15 Jahren nach einem Kurs eine Discographie mit 5000 CDs und 1500 Vinyls mit Access und finde mich mit heutigem php/sql nicht wirklich zurecht:
                    mein Zugang sagt mir nur "Seite funktioniert nicht" oder "Antwort dauert zu lange", wenn ich " und ' verwechselt habe (2x eines davon in einem Statement) oder wenn wo ein . oder ; fehlt, Fehlermeldungen bekomme ich nur bei Versuchen in der sql Konsole)

                    ... dann müsste das Folgende funktionieren?

                    $conn= new mysqli($servername, $username, $password, $dbname) ;
                    // wobei statt Variablen auch zb "localhost" etc. (also Strings) stehen kann?

                    $sqla0= "create table namentabelle id(10) auto_increment, ".
                    ."name char(100), vorname char(100)";
                    $sqla1= "insert into namentabelle (name,vorname) values('Meier','Anton');";
                    $sqlb= "select id, name, vorname from namentabelle;";

                    $resultb= array();

                    if (!$resulta0 = mysqli_query($sqla0) ; )
                    die("Erzeugung von namentabelle fehlerhaft, Abbruch \n") ;
                    elseif(!$resulta1 = mysqli_query($sqla1) ; )
                    die("namentabelle ok aber Einfügen der Daten fehlerhaft, Abbruch \n") ;
                    else
                    {
                    $resultb = mysqli_query(sqlb) ;}
                    while($row = mysqli_fetch_array($resultb))
                    {echo "\t".$row['name'] ."\t".$row['vorname']."\n"; }
                    }
                    mysql_close($conn) ;

                    // (?) (ich bekomme wieder "diese Seite funktioniert nicht")

                    // Zusatzfrage: gibt es irgendwelche sql statements, die in Versalien BLOCKBUCHSTABEN geschrieben sein müssen?
                    (die sind übersichtlicher, ich weiss schon, aber Schreiben ist mühsamer)
                    Zuletzt geändert von sfw; 07.08.2020, 13:46.

                    Kommentar

                    Lädt...
                    X