【发布时间】:2016-07-22 13:39:33
【问题描述】:
我的 SQL 语句有一些问题。
require_once("Dozent.php");
.
.
.
public function findAll()
{
try {
$stmt = $this->pdo->prepare('
SELECT * FROM vorlesung WHERE id_dozent = $dozent->id;
');
$stmt->execute();
$stmt->setFetchMode(PDO::FETCH_CLASS, 'Vorlesung');
return $stmt->fetchAll();
} catch (PDOException $e) {
echo("Fehler! Bitten wenden Sie sich an den Administrator...<br>" . $e->getMessage() . "<br>");
die();
}
}
'id_dozent = $dozent->id' 这不起作用,我不知道为什么。当我插入像“1”这样的数字时,它按预期工作。
有人知道我做错了什么吗?
非常感谢! :-)
Edit1:完整代码:
<?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();
}
}
【问题讨论】:
-
$dozent和$dozent->id定义/设置在哪里? -
1) 单引号没有插值 2) 编写正确的代码,with placeholders(并完全避免这个“问题”)
-
$stmt->setFetchMode(PDO::FETCH_CLASS|PDO::FETCH_PROPS_LATE, 'Vorlesung');
-
@VolkerK
$dozent是 Dozent 类的一个实例。它们在 Dozent.php 中设置。