PDO select probleme

luchs3

Erfahrenes Mitglied
Hi,

Ich vesuch gerade meine pdo skills zu verbessern.

Ich würde zum einen gerne eine Abfrage in einer Abfrage machen.
Lässt er mich aber nicht schenk mir immer ein
Fatal error: Call to a member function fetch() on a non-object in /var/...
zum anderen frag ich mich, ob es eine Möglichkeit gibt $stmt nochmal bei $stmt2 einzusetzten. Wenn ich nochmal $stmt aufrufe ignorriert er das Statemen einfach.

PHP:
echo '<form action="?" method="POST">
<input type="text" name="sport">
<select name="sp_kat">';
$stmt = $dbh->query('SELECT * FROM sportkat ORDER BY sportkat_name ASC');
while ($row = $stmt->fetch()) {
    echo '<option value="'.$row[0].'">'.$row[1].'</option>';
}
echo '</select>
<input type="submit" value="hinzuf&uuml;gen">
</form><br>';

$stmt2 = $dbh->query('SELECT * FROM sportkat ORDER BY sportkat_name ASC');    
while ($row2 = $stmt2->fetch()) {
    echo '<b>'.$row2[1].'</b><br>';
    $stmt3 = $dbh->query('SELECT sp_name FROM sports');
    while ($row3 = $stmt3->fetch()) {
        print_r($row3[0]); echo '<br>';
    }
        
}
Danke im vorraus
Niko
 
Das mit der Wiederverwendbarkeit des $stmt Statements hab ich gelöst.
Aber die Abfrage $stmt3 bekomm ich einfach nicht hin.

PHP:
    echo '<form action="?" method="POST">
    <input type="text" name="sport">
    <select name="sp_kat">';
    $stmt = $dbh->prepare('SELECT * FROM sportkat ORDER BY sportkat_name ASC');
    $stmt->fetch();
    $stmt->execute();
    foreach ($stmt as $row) {
        echo '<option value="'; print_r($row[0]); echo'">'; print_r($row[1]); echo '</option>';
    }
    echo '</select>
    <input type="submit" value="hinzuf&uuml;gen">
    </form><br>';

    
    $stmt->execute();

    $stmt3 = $dbh->prepare('SELECT sp_name FROM sports WHERE sp_id = "$row[0]"');
    $stmt3->fetch();
    
    foreach ($stmt as $row) {
        echo '<b>'.$row[1].'</b><br>';
        $stmt3->execute();
        foreach ($stmt3 as $row2) {
            print_r($row2[0]); echo '<br>';
        }
        
    }
 
Zurück