【问题标题】:HTML & PHP | Filling a select with a queryHTML 和 PHP |用查询填充选择
【发布时间】:2015-09-05 15:51:11
【问题描述】:

我有一个使用mysqli函数的函数,如下:

public function GetProjectOptions()
{
    $return = "";
    $sql = "SELECT `id`, `project_name` FROM `projects`;";
    $rs  = static::$link->query($sql);
    $return .= '<select class="form-control" name="project">';
    while ($result = mysqli_fetch_assoc($rs));
    {
        $return .= "<option value='" . $result['id'] . "'>" . 
                    $result['project_name'] . "</option>";
    }
    $return .= '</select>';
    return $return;
}

此函数的目的是创建选项并选择将用于我网站上的项目,我知道表中当前存储了 4 个项目,但它们没有在此函数中返回,有什么我做错了吗?

编辑:

Link to screen output: (http://i.imgur.com/YIYiheH.png)  
Link to code output: (http://i.imgur.com/RZsUIwQ.png)  
Link to code usage: (http://i.imgur.com/4J9rvd7.png)

(不让我做普通链接)

【问题讨论】:

  • 你没有使用任何错误检查。
  • 在构造函数中进行错误检查
  • 您的构造函数如何检查该查询是否有错误?
  • 我以为他指的是$link...我的错误,我正在使用的服务器(WampServer)让我知道是否有错误并将其打印给我
  • @Fred-ii-,先生,你是个传奇!

标签: php html mysqli


【解决方案1】:

我发现了问题。

这里去掉分号

while ($result = mysqli_fetch_assoc($rs));
                                         ^

这就是它没有抛出错误的原因,因为它被认为是有效的语法。

您的循环正在被它停止/终止。

【讨论】:

  • Me too Ralph 我们应该开始称你为 Eagle-Eye @Fred -ii-
  • 最简单的错误总是烤出最大的问题,非常感谢,说真的,你帮我省了好几个小时的麻烦!
  • Golly Sam,当一切都加起来但没有加起来时,我仔细看了看,然后 BAM !! @JayBlanchard
  • @SamSwift 我认识山姆。顺便说一句,Jay 的“Sam”事情,它不是针对你的,哈哈——我们有这个“Ralph & Sam” Loonie Tunes 的事情正在发生。很高兴这个问题得到了解决,干杯!
  • @SamSwift 哦,非常欢迎 Sam。一切顺利。
【解决方案2】:

我认为 Jay 和 Styphon 的评论的意思是您不会在 SELECT 查询中进行任何错误检查。您确定您的查询执行正确吗?我知道这是一个相对简单的查询,并且您肯定有四个项目当前存储在您的表中,但检查始终是一个好习惯。试试这个:

public function GetProjectOptions()
{
    $return = "";
    $sql = "SELECT `id`, `project_name` FROM `projects`;";
    $rs  = static::$link->query($sql);
    $return .= '<select class="form-control" name="project">';
    if($rs){
        while ($result = mysqli_fetch_assoc($rs));
        {
            $return .= "<option value='" . $result['id'] . "'>" . $result['project_name'] . "</option>";
        }
        $return .= '</select>';
    }else{
        $message  = 'Invalid query: ' . mysqli_error() . "\n";
        $message .= 'Whole query: ' . $sql;
        die($message);
    }

    return $return;
}

我希望这会有所帮助!

【讨论】:

  • 如果是变量范围问题,则不会出现错误检查。我并不是说这个答案是错误的,我只是在说明可能是什么或问题。加上mysqli_error()需要DB连接作为参数传递php.net/manual/en/mysqli.error.phpstring mysqli_error ( mysqli $link )
猜你喜欢
  • 1970-01-01
  • 2015-08-28
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-16
  • 1970-01-01
相关资源
最近更新 更多