Ankündigung

Einklappen
Keine Ankündigung bisher.

Daten aus Tabelle auslesen

Einklappen

Neue Werbung 2019

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

  • Daten aus Tabelle auslesen

    Hallo Zusammen,

    ich bekomme es nicht hin, die Einträge einer Tabelle aus einer Datenbank auszulesen und finde den Fehler nicht. Die Tabelle enthält 2 Einträge.

    Hat jemand eine Idee?

    Danke & viele Grüße

    PHP-Code:
    <?php
    // require_once ('/inc/inc.php');

    // Verbindung zur Datenbank
    define 'MYSQL_HOST',      'aaa' );
    define 'MYSQL_BENUTZER',  'bbb' );
    define 'MYSQL_KENNWORT',  'ccc' );
    define 'MYSQL_DATENBANK''bbb' );

    $db_link mysqli_connect (MYSQL_HOST,
                               
    MYSQL_BENUTZER,
                               
    MYSQL_KENNWORT,
                               
    MYSQL_DATENBANK);

    if ( 
    $db_link )
    {
      echo 
    'Verbindung erfolgreich<br><br>';
      
    print_r ($db_link);
      echo 
    "<br><br>";
    }
    else
    {
        die(
    'keine Verbindung möglich: ' mysqli_error());
    }

    $db_sql "SELECT * FROM daspiet_geburtstage";
    $db_erg mysqli_query ($db_link$db_sql);

    echo 
    '<table border="1">';
    while (
    $zeile mysqli_fetch_array ($db_ergMYSQL_ASSOC))
    {
    $i++;
    echo 
    $i;
      echo 
    "<tr>";
      echo 
    "<td>"$zeile['geburtstage_id'] . "</td>";
      echo 
    "<td>"$zeile['geburtstage_jahr'] . "</td>";
      echo 
    "<td>"$zeile['geburtstage_monat'] . "</td>";
      echo 
    "<td>"$zeile['geburtstage_tag'] . "</td>";
      echo 
    "<td>"$zeile['geburtstage_name'] . "</td>";
      echo 
    "<td>"$zeile['geburtstage_link'] . "</td>";
      echo 
    "</tr>";
    }
    echo 
    "</table>";

    mysqli_free_result$db_erg );
    ?>
    Ausgabe (Quelltext):
    Verbindung erfolgreich<br><br>mysqli Object
    (
    [affected_rows] => 0
    [client_info] => mysqlnd 5.0.12-dev - 20150407 - $Id: b5c5906d452ec590732a93b051f3827e02749b83 $
    [client_version] => 50012
    [connect_errno] => 0
    [connect_error] =>
    [errno] => 0
    [error] =>
    [error_list] => Array
    (
    )

    [field_count] => 0
    [host_info] => aaa via TCP/IP
    [info] =>
    [insert_id] => 0
    [server_info] => 5.7.18-15-57
    [server_version] => 50718
    [stat] => Uptime: 7199700 Threads: 83 Questions: 41638240 Slow queries: 0 Opens: 2403154 Flush tables: 1 Open tables: 1024 Queries per second avg: 5.783
    [sqlstate] => 00000
    [protocol_version] => 10
    [thread_id] => 4239768
    [warning_count] => 0
    )
    <br><br><table border="1"></table>

  • #2
    Kommt denn ein Ergebnis wenn du die Abfrage in phpMyAdmin ausführst?

    Du solltest das Geburtsdatum in eine Spalte des Typs Date speichern.
    Du fragst nicht den Fehler ab, ein Beispiel dazu steht im Handbuch.

    Darüber hinaus ist es immer sinnvoll wenn du hier ein Mysql-Duump einfügst, damit man das nachvollziehen kann.
    Oder, alternativ erstellst du ein SQLfiddle wenn es ein SQL Problem ist.

    Kommentar


    • #3
      Ich habe den Quelltext angepasst, bekomme jedoch auch keinen Fehler angezeigt. Über phpMyAdmin werden mir die Datensätze beide angezeigt.

      Aktueller Quelltext:
      PHP-Code:
      <?php
      // require_once ('/inc/inc.php');

      // Verbindung zur Datenbank
      define 'MYSQL_HOST',      'aaa' );
      define 'MYSQL_BENUTZER',  'bbb' );
      define 'MYSQL_KENNWORT',  'ccc' );
      define 'MYSQL_DATENBANK''bbb' );

      $db_link mysqli_connect (MYSQL_HOST,
                                 
      MYSQL_BENUTZER,
                                 
      MYSQL_KENNWORT,
                                 
      MYSQL_DATENBANK);

      if ( 
      $db_link )
      {
        echo 
      'Verbindung erfolgreich<br><br>';
        
      print_r ($db_link);
        echo 
      "<br><br>";
      }
      else
      {
          die(
      'keine Verbindung möglich: ' mysqli_error());
      }

      $db_sql "SELECT * FROM daspiet_geburtstage";
      if (!
      $db_erg $mysqli->query($db_sql)) {
          
      // Oh no! The query failed.
          
      echo "Sorry, the website is experiencing problems.";

          
      // Again, do not do this on a public site, but we'll show you how
          // to get the error information
          
      echo "Error: Our query failed to execute and here is why: \n";
          echo 
      "Query: " $db_sql "\n";
          echo 
      "Errno: " $mysqli->errno "\n";
          echo 
      "Error: " $mysqli->error "\n";
          exit;
      }
      $db_erg mysqli_query ($db_link$db_sql);
      if (!
      $db_erg) die('Ungültige Abfrage: ' mysqli_error());
      if (
      $db_erg) echo 'Abfrage erfolgreich.';

      echo 
      '<table border="1">';
      while (
      $zeile mysqli_fetch_array ($db_ergMYSQL_ASSOC))
      {
        echo 
      "<tr>";
        echo 
      "<td>"$zeile['geburtstage_id'] . "</td>";
        echo 
      "<td>"$zeile['geburtstage_jahr'] . "</td>";
        echo 
      "<td>"$zeile['geburtstage_monat'] . "</td>";
        echo 
      "<td>"$zeile['geburtstage_tag'] . "</td>";
        echo 
      "<td>"$zeile['geburtstage_name'] . "</td>";
        echo 
      "<td>"$zeile['geburtstage_link'] . "</td>";
        echo 
      "</tr>";
      }
      echo 
      "</table>";

      mysqli_free_result ($db_erg);
      ?>
      MySQL-Dump:
      -- phpMyAdmin SQL Dump
      -- version 4.7.4
      -- https://www.phpmyadmin.net/
      --
      -- Host: mysqla.service
      -- Erstellungszeit: 20. Nov 2017 um 00:03
      -- Server-Version: 5.7.18-15-57
      -- PHP-Version: 7.0.19-1

      SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO";
      SET AUTOCOMMIT = 0;
      START TRANSACTION;
      SET time_zone = "+00:00";


      /*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
      /*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
      /*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
      /*!40101 SET NAMES utf8mb4 */;

      --
      -- Datenbank: `bbb`
      --

      -- --------------------------------------------------------

      --
      -- Tabellenstruktur für Tabelle `daspiet_geburtstage`
      --

      CREATE TABLE `daspiet_geburtstage` (
      `geburtstage_jahr` int(4) NOT NULL,
      `geburtstage_monat` int(2) NOT NULL,
      `geburtstage_tag` int(2) NOT NULL,
      `geburtstage_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
      `geburtstage_link` varchar(255) CHARACTER SET latin1 COLLATE latin1_german1_ci NOT NULL,
      `geburtstage_id` int(11) NOT NULL
      ) ENGINE=InnoDB DEFAULT CHARSET=latin1;

      --
      -- Daten für Tabelle `daspiet_geburtstage`
      --

      INSERT INTO `daspiet_geburtstage` (`geburtstage_jahr`, `geburtstage_monat`, `geburtstage_tag`, `geburtstage_name`, `geburtstage_link`, `geburtstage_id`) VALUES
      (1967, 11, 22, 'Boris Becker', '', 0),
      (1974, 8, 4, 'Thomas', '', 1);

      --
      -- Indizes der exportierten Tabellen
      --

      --
      -- Indizes für die Tabelle `daspiet_geburtstage`
      --
      ALTER TABLE `daspiet_geburtstage`
      ADD PRIMARY KEY (`geburtstage_id`),
      ADD UNIQUE KEY `geburtstage_id` (`geburtstage_id`);
      COMMIT;

      /*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
      /*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
      /*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

      Kommentar


      • #4
        Du solltest das Error-Reporting hochdrehen, da sind Fehler drin, die dir dann angezeigt würden.
        PHP-Code:
        if (!$db_erg $mysqli->query($db_sql)) 
        $mysqli gibt es in deinem Script nicht
        PHP-Code:
        if (!$db_erg mysqli_query($db_link$db_sql)) 

        PHP-Code:
        $db_erg mysqli_query ($db_link$db_sql); 
        Ein zweites Mal ist unnötig


        PHP-Code:
        while ($zeile mysqli_fetch_array ($db_ergMYSQL_ASSOC)) 
        Das heißt MYSQLI_ASSOC
        PHP-Code:
        while ($zeile mysqli_fetch_array ($db_ergMYSQLI_ASSOC)) 
        Die Deutsche Rechtschreibung ist Freeware! Du darfst sie kostenlos nutzen, allerdings ist sie nicht Open Source, d.h. Du darfst sie nicht verändern oder in veränderter Form veröffentlichen.

        Kommentar


        • #5
          Ui, du hast da einige Fehler, mach bitte zuerst mal diese beiden Links mit deinem Code durch und dann komme hier mit der aktuellen Version wieder.

          1. https://php-de.github.io/jumpto/faq/#debugging

          2. https://php-de.github.io/jumpto/sql/ (das ist sogar genau in/für mysqli_ erstellt)
          The string "()()" is not palindrom but the String "())(" is.

          Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
          PHP.de Wissenssammlung | Kein Support per PN

          Kommentar


          • #6
            Du machst schon bei der Erstellung der Datenbank grundlegende Fehler.
            Datumswerte gehören in eine Spalte Date oder Datetime und nicht getrennt in 3 Spalten.
            Wenn die Tabelle Geburtstage heisst, brauchst du den Präfix geburtstage_ nicht in den Spaltennamen zu verwenden, halte es einfach.
            Der Zeichensatz sollte nicht latin1 sein sondern besser utf8, sonst hast du später Probleme mit der Darstellung der Umlaute und Sonderzeichen.

            Lösche deine Tabelle und erstelle sie nach unterem Muster neu.
            Tabelle löschen mit SQL
            Code:
            DROP TABLE IF EXISTS `daspiet_geburtstage`;
            Neue Tabelle erstellen und mit Daten füllen
            Code:
            --
            -- Table structure for table `geburtstage`
            --
            
            
            CREATE TABLE IF NOT EXISTS `geburtstage` (
              `id` int(11) NOT NULL AUTO_INCREMENT,
              `geburtstag` date DEFAULT NULL,
              `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL,
              `link` varchar(255) CHARACTER SET utf8 COLLATE utf8_german2_ci NOT NULL,
              PRIMARY KEY (`id`)
            ) ENGINE=InnoDB  DEFAULT CHARSET=utf8;
            
            --
            -- Dumping data for table `geburtstage`
            --
            
            INSERT INTO `geburtstage` (`id`, `geburtstag`, `name`, `link`) VALUES
            (1, '1968-11-02', 'Peter Pan', ''),
            (2, '1973-09-12', 'Max Mustermann', ''),
            (3, '1982-10-02', 'Else Stratmann', '');
            Jetzt hast du eine gute Ausgangsbasis für deine Abfrage.




            Kommentar

            Lädt...
            X