【发布时间】:2014-07-08 04:44:09
【问题描述】:
我正在尝试使用动态变量在 While 循环中编写查询,但似乎无法使其正常工作。我是 PDO 的新手,所以如果这甚至是正确的方法,我也不是 100%。与数据库 ($db) 的连接工作正常,并且查询运行良好,无需第二个 $STH2 行。请帮忙:)
<?php
//This will list player info so the user can get the correct player ID
$STH = $db->query('SELECT id, name, tag from wdlTeams');
//Setting the fetch mode
$STH->setFetchMode(PDO::FETCH_ASSOC);
//Create listbox object and populates options with team names
echo "<select name='teamID'>";
while($row = $STH->fetch()) {
$id = $row['id'];
$name = $row['name'];
$tag = $row['tag'];
$seasonId = $row['seasonId'];
$STH2 = $db->prepare('SELECT name from wdlSeasons where id=$seasonId');
$STH2->execute();
$seasonName = $STH2->fetchColumn();
echo "<option value='$id'>$tag - $name ($seasonName)</option>";
echo "<br />";
}
echo "</select>";
?>
我也试过改成
$STH2 = $db->prepare("SELECT 'name' from 'wdlSeasons' where id='$seasonId'");
但没有运气
【问题讨论】:
-
当您直接将变量注入 SQL 字符串时,准备好的语句完全没有意义。至少在 MySql 中
'不是标识符的正确引用,请尝试使用反引号。此外,PHP 不会在单个 qoutes 中进行插值。 -
而不是循环中的第二个查询,只需对第一个查询进行连接查询 ->
SELECT wT.id, wT.name, wT.tag, wS.name as seasonName from wdlTeams wT LEFT JOIN wdlSeasons wS on wS.id=wT.seasonId -
谢谢你,这很好用