【问题标题】:PDO subquery using variable within a loop在循环中使用变量的 PDO 子查询
【发布时间】: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
  • 谢谢你,这很好用

标签: php mysql pdo subquery


【解决方案1】:

试试这个:

$STH2 = $db->prepare('SELECT name from wdlSeasons where id=:id'); $STH2->bindParam(':id', $seasonId); $STH2->execute();

【讨论】:

    猜你喜欢
    • 2012-05-23
    • 2019-03-02
    • 2014-01-24
    • 2014-07-01
    • 2016-06-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多