来自其他表的PHP
的一个表使用列表获取数据我有以下各表来自其他表的PHP
myListTable
playerId listId type
50 10 0
51 10 0
球员
id x xx etc
50 x xx etc
51 x xx etc
我想运行一个查询在那里我提供listId和类型并且它将得到与该listId相关的所有玩家的列表,并且类型
try {
$conn = $this->GetDBConnection();
$type = 0; // 0 REQUEST BY PLAYERS
$statement = $conn->prepare('SELECT p.* FROM myListTable c, players p WHERE (c.listId = :listId) AND (c.type = :type) AND (p.id = c.playerId) ');
$statement->bindParam(':listId', $listId, PDO::PARAM_INT);
$statement->bindParam(':type', $type, PDO::PARAM_INT);
$statement->execute();
if(!($row = $statement->fetchAll(PDO::FETCH_ASSOC))) {
return false;
}
$conn = null;
} catch(PDOException $e) {
throw $e;
}
这只是让我错误。我需要做些什么来解决这个问题?
其中一个错误是在你准备查询一个错字:
$statement = $conn->prepare('SELECT p.*
FROM myListTable c, players p
WHERE (c.listId = :c.listId)
AND (c.type = :type)
AND (p.id = c.playerId) ');
的:c.listId
应该只是:listId
。
第二个是,type
是MySQL中的一个保留字。您需要反引号以在您的查询中转义它。
另一个是,因为您只是从players
表中选择值;优选JOIN
。
查询应该是:
SELECT p.*
FROM players p
JOIN myListTable c
ON (p.id = c.playerId)
WHERE (c.listId = :c.listId)
AND (c.`type` = :type)
所有这些变化,结果仍然是错误的:( – 2013-03-18 08:42:38
即使使用反引号for'type'? – hjpotter92 2013-03-18 08:44:22
您尝试在某处手动运行此查询? – 2013-03-18 08:46:25
':c.listId'应改为':listId'。 – hjpotter92 2013-03-18 08:26:37
它是,所有这些类型的错误 – 2013-03-18 08:27:45