【问题标题】:multiple rows from one table一张表的多行
【发布时间】:2012-12-13 23:39:53
【问题描述】:

我试图从数据库中回显两件事,为什么这不起作用?以及我如何让它发挥作用。我只是学习 php,所以如果这是一个非常愚蠢的问题,我很抱歉。

$result = mysql_query("SELECT user_id, team FROM users WHERE username = '$username'");
while($row = mysql_fetch_array($result))
$user_id = $row['user_id'];
$team = $row['team'];

echo = $user_id;
echo = $team;`

感谢您提供的任何帮助!

【问题讨论】:

    标签: php sql arrays row fetch


    【解决方案1】:

    你应该像这样使用方括号对代码进行分组:

    $result = mysql_query("SELECT user_id, team FROM users WHERE username = '$username'");
    while($row = mysql_fetch_array($result))
    {
        $user_id = $row['user_id'];
        $team = $row['team'];
    
        echo $user_id;
        echo $team;
    }
    

    【讨论】:

    • ooh.. 非常感谢,那时我还没有走得太远 :) 我想我必须阅读这些括号,我经常遇到这些问题。我在哪里可以了解它们?
    • w3schools 是一个很好的入门资源。
    • 如果您认为这是解决问题的正确方法,请接受此答案。
    • @tpaksu 不只是将人们送到 w3schools,see the discussion on meta,因为该网站仍然坚持向人们传授 已弃用的 mysql_ 系列调用,以及其他罪恶。
    • 好的,我会在以后的帖子中考虑到这一点。谢谢。
    【解决方案2】:

    正如 tpaksu 已经提到的,您需要将要执行循环的语句括起来。

    二、echo的正确格式是

    echo $user_id;
    

    还有另外两个相当基本的评论

    • mysql 调用已弃用,这意味着它们已被更新的替代方法(特别是 mysqli 或更好的 PDO)取代。不要浪费时间学习如何使用 mysql* 系列调用,现在切换到 mysqli 或最好是 PDO。
    • "SELECT user_id, team FROM users WHERE username = '$username'"); 这样的sql 语句,其中一个变量按原样包含在SQL 语句中,对于SQL injection 来说是一个巨大的风险。您可以浪费宝贵的时间设计各种巧妙的方案来在包含之前清理变量,或者您可以学习唯一正确的方法,即使用prepared statements。乍一看可能不太直观,但您很快就会习惯。

    这会将您的代码转换为如下内容:

    <?php
      $stmt = $dbh->prepare("SELECT user_id, team FROM users WHERE username = ?");
      if ($stmt->execute(array($username))) {
        while ($row = $stmt->fetch()) {
          $user_id = $row['user_id'];
          $team = $row['team'];
    
          echo $user_id;
          echo $team;
        }
      }
    ?>
    

    这是防注入并使用最新技术。作为额外的副作用,适应其他品牌的数据库会容易得多。

    【讨论】:

    • 谢谢!这很有帮助!我会更多地研究那些 pdo 的东西。我希望我不必对我的代码做太多修改 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-04
    • 1970-01-01
    • 1970-01-01
    • 2013-12-15
    • 2016-10-18
    • 1970-01-01
    相关资源
    最近更新 更多