mysql in pdo

hobboh

Neuer Benutzer
Beiträge
3
Hallo zusammen,
ich bin dabei eine Website auch auf PHP 7 zum laufen zu bringen, das klappt auch bis auf eine Datenbankabfrage, vielleicht kann mir da jemand von Euch kurz helfen.
Zum Verständnis der alte Code:
PHP:
<?php
            define ( 'MYSQL_HOST',      'localhost'    );   
            define ( 'MYSQL_BENUTZER',  'benutzer' );
            define ( 'MYSQL_KENNWORT',  'passwort' );
            define ( 'MYSQL_DATENBANK', 'db' );
  $db_link = mysqli_connect (MYSQL_HOST,
                           MYSQL_BENUTZER,
                           MYSQL_KENNWORT,
                           MYSQL_DATENBANK, '3306', '/var/run/mysqld/mysqld.sock');
            mysqli_set_charset($db_link, 'utf8');

 if (isset($_GET['del']) && $_GET['del'] != '') {
                $sql = "delete from event where id = " . $_GET['del'] . ";";
                $erg = mysqli_query($db_link, $sql);
            }
          
            $sql = "select * from event order by datum;";
            $erg = mysqli_query($db_link, $sql);
          
            echo '<table border="1">';
            while ($row = mysqli_fetch_array( $erg, MYSQL_ASSOC))
            {
                $sql2 = "select name from pressetext where id = " . $row['presseid'] . ";";
                $erg2 = mysqli_query($db_link, $sql2);
                $row2 = mysqli_fetch_array($erg2, MYSQL_ASSOC);
          
             echo "<tr>";
             echo "<td>". $row['id'] . "</td>";
             echo "<td>". $row['datum'] . "</td>";
             echo "<td>". $row['name'] . "</td>";
             echo "<td>". $row2['name'] . "</td>";
             echo "<td>". $row['location'] . "</td>";
             echo "<td>". $row['beginn'] . "</td>";
             echo "<td>". $row['eventtyp'] . "</td>";
             echo "<td>". $row['promote'] . "</td>";
             echo '<td><a href="editevent.php?edit=' . $row['id'] . '">Bearbeiten</a></td>';
             echo '<td><a href="listevents.php?del=' . $row['id'] . '">Löschen</a></td>';
             echo "</tr>";
            
             mysqli_free_result($erg2);
            }
            echo '</table>';
          
            mysqli_free_result($erg);
          
        ?>

ersetzt mit:
PHP:
<?php
            $pdo = new PDO('mysql:host=localhost;dbname=db;charset=utf8', 'benutzer', 'password');
        ?>

        <?php
        if (isset($_GET['del']) && $_GET['del'] != '') {
                $sql = $pdo->query("delete from event where id = " . $_GET['del'] . ";");
            }
        ?>
        
        <?php $sql = $pdo->query("SELECT * FROM `event` ORDER by `datum`");
            echo '<table border="1">';
        ?>
        
        <ul>
            <?php foreach ($sql AS $row):   
        
            ?>
            <?php echo "<tr>";
                  echo "<td>". $row['id'] . "</td>";
                  echo "<td>". $row['datum'] . "</td>";
                  echo "<td>". $row['name'] . "</td>";
                  echo "<td>". $row2['name'] . "</td>";
                  echo "<td>". $row['location'] . "</td>";
                  echo "<td>". $row['beginn'] . "</td>";
                  echo "<td>". $row['eventtyp'] . "</td>";
                  echo "<td>". $row['promote'] . "</td>";
                  echo '<td><a href="editevent.php?edit=' . $row['id'] . '">Bearbeiten</a></td>';
                  echo '<td><a href="listevents.php?del=' . $row['id'] . '">Löschen</a></td>';
                  echo "</tr>";
            ?>
            <?php endforeach;
                echo '</table>';
            ?>
        </ul>

Wie gesagt das klappt soweit bis auf die $row2 Abfrage

Danke schon mal im Voraus für die Mithilfe.
 
Werbung:
Wie gesagt das klappt soweit bis auf die $row2 Abfrage

tolle Fehlerbeschreibung.

PHP ist hier Offtopic, und Du scheinst ein Problem damit zu haben. Zum SQL-Teil:

  • select * ist böse, zähle die nötigen Felder auf
  • das Konzept von JOIN's scheint noch unbekannt zu sein, daher auch wohl 2 getrennte Abfragen
  • im zweiten Code-Block hast Du die zweite Abfrage offenbar vergessen ...

habe fertig.
 
Danke akretschmer für den Denkanstoß mit JOIN, ich habe das jetzt so gelöst, dass ich gleich in MySQL die richtige Datenbankabfrage gestellt habe.
PHP:
$sql = $pdo->query("SELECT event.id, event.datum, event.name, event.presseid, event.location, event.beginn, event.eventtyp, event.promote, pressetext.id, pressetext.name
FROM event, pressetext
WHERE event.presseid=pressetext.id
ORDER BY datum");
Aber wie kann ich bei meiner Ausgabe wieder auf die Spalte zugreifen also per Name also wie:
PHP:
echo "<td>". $row['eventtyp'] . "</td>";
? und nicht so:
Code:
echo "<td>". $row['2'] . "</td>";
Das wäre der krönende Abschluss, so funktioniert es zwar schon aber schön ist das nicht.
Danke für die schnelle Hilfe in dem Forum!
 
Werbung:
Zurück
Oben