2016-04-02 7 views
-3

Ich habe einige Probleme mit einer SQL-Anweisung.PHP: Kann nicht auf Klasse in SQL-Anweisung zugreifen

'id_dozent = $ dozent-> ID' das funktioniert nicht und ich weiß nicht warum. Wenn ich eine Zahl wie '1' einfüge, funktioniert es wie erwartet.

Weiß jemand, was ich falsch mache?

Vielen Dank! :-)

Edit1: Voll Code:

<?php 

require_once("Manager.php"); 
require_once("Vorlesung.php"); 

require_once("Dozent.php"); 
require_once("DozentManager.php"); 

class VorlesungManager extends Manager 
{ 
    protected $pdo; 

    public function __construct($connection = null) 
    { 
     parent::__construct($connection); 
    } 

    public function __destruct() 
    { 
     parent::__destruct(); 
    } 

    public function findAll() 
    { 
     try { 
      $stmt = $this->pdo->prepare(' 
       SELECT * FROM vorlesung WHERE "id_dozent = $dozent->id"; 
      '); 
      $stmt->execute(); 
      $stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Vorlesung'); 
      return $stmt->fetchAll(); 
     } catch (PDOException $e) { 
      echo("Fehler! Bitten wenden Sie sich an den Administrator...<br>" . $e->getMessage() . "<br>"); 
      die(); 
     } 

    } 
+0

http://php.net/manual/de/pdo.error-handling.php - http://php.net/manual/en/function.error-reporting.php –

+0

Wo sind '$ dozent' und '$ dozent-> id' definiert/gesetzt? – VolkerK

+0

1) einfache Anführungszeichen sind * nicht * interpoliert 2) schreiben korrekten Code, [mit Platzhaltern] (http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php?rq = 1) (und dieses "Problem" vollständig vermeiden) – user2864740

Antwort

0

$dozent->id ist nicht definiert innerhalb function findAll()

Sie haben ein Argument zu verwenden:

public function findAll($dozent) 

Und eine richtige Art und Weise, dass Wert in der Abfrage enthalten so etwas wie dieses:

$stmt = $this->pdo->prepare('SELECT * FROM vorlesung WHERE id_dozent = ?'); 
$stmt->execute(array($dozent->id)); 

Oder dies:

$stmt = $this->pdo->prepare('SELECT * FROM vorlesung WHERE id_dozent = :id'); 
$stmt->execute(array(':id' => $dozent->id)); 
+0

Vielen Dank @CJ Nimes! Es funktioniert jetzt! –

+0

froh zu helfen! :) –

-1

Versuchen mit "... {$ dozent-> id};". Mit den Anführungszeichen und Klammern.