返回<;选项>;使用MySQL和PHP的PDO函数中的标记

返回<;选项>;使用MySQL和PHP的PDO函数中的标记,php,sql,pdo,Php,Sql,Pdo,我有以下功能: function getSystemNames($dbh, $myid) { $sql = $dbh->prepare(' SELECT system_name FROM product_systems WHERE user_id = :myid ORDER BY `system_name` ASC '); $sql->bindValue('myid', $myid); $sql->execute

我有以下功能:

function getSystemNames($dbh, $myid) {
    $sql = $dbh->prepare('
    SELECT system_name 
    FROM product_systems
    WHERE user_id = :myid
    ORDER BY `system_name` ASC
    ');
    $sql->bindValue('myid', $myid);
    $sql->execute();
    return $sql;
}
;
然后,我的HTML中混合了以下代码:

<select id='group' class='select' name='group'><option value='000'>None</option>
        <?php
        $results = getSystemNames($dbh, $myid);             
        while ($row1 = $results->fetch(PDO::FETCH_ASSOC)){              
          echo "<option value='$row1[system_name]'>$row1[system_name]</option>";
        }
        ?>
</select>

您必须在while循环外部创建一个临时变量,并在while循环内部连接它。然后返回临时变量。并执行echo getSystemNames(…)
函数getSystemNames($dbh,$myid){
$sql=$dbh->prepare($sql)
选择系统名称
来自product\u系统
其中user_id=:myid
按“系统名称”ASC订购
');
$sql->bindValue($myid',$myid);
$sql->execute();

$result=$sql->fetchAll();你说将两者合并是什么意思?你能举个例子吗?@itachi我举了个例子…我现在调用GetSystemName,然后运行一个while循环。我在想一个更好的方法,但是当我在函数中加入while循环时,我得到的结果并不是我想要的结果。没有评论的否决票。我总是喜欢这样。我要和我的同事核实一下吗我的问题出了什么问题?好吧,我明白你在评论中所说的示例是什么意思。你的意思是在html方面。所以我所要做的就是减少html方面的代码量。我希望将html代码简化为getSystemNames();并在函数中出现循环。我在我的问题中尝试过这样做,但最后一个函数不起作用。你对如何在我的html中使用最少的php代码输出标记有什么想法吗?你不应该这样做。把逻辑和表示放在一边。目标应该是最小化html部分中的php代码。而不是相反。这会导致调试我建议你不要在函数中使用任何html部分,除非它是必要的。在你的情况下,这是没有必要的。好的itachi,我想这是我想要的真正答案,非常感谢!我正试图转向一种更面向对象的方法,所以我正试图从我的html中分离出尽可能多的PHP。通过你的advice,我现在不想把HTML拉到我的函数中。再次感谢您的时间……不客气。我建议您阅读有关模型-视图-控制器方法的内容。模型处理数据库,视图处理演示,协作者处理请求,从而充当两者之间的中间人。它使代码整洁,干净,易于调试…并且易于修改。谢谢你的回答,但我对php还不是非常熟悉。你的意思是添加$temp=array();在while循环之前?然后我将能够返回$temp;?你有一个代码示例可以帮助我自己和其他人吗?你得到了我想要的,但我不确定如何实现它。你有点正确,希望$temp是一个字符串。
$temp='';
然后在你的循环中
$temp.='谢谢tigran的建议g、 基于以上的评论,我将暂时远离这整件事。
function getSystemNames($dbh, $myid) {
    $sql = $dbh->prepare('
    SELECT system_name 
    FROM product_systems
    WHERE user_id = :myid
    ORDER BY `system_name` ASC
    ');
    $sql->bindValue('myid', $myid);
    $sql->execute();
    while ($row1 = $sql->fetch(PDO::FETCH_ASSOC)) {                 
        return "<option value='$row1[system_name]'>$row1[system_name]</option>";
    }
}
;
function getSystemNames($dbh, $myid) {
    $sql = $dbh->prepare('
    SELECT system_name 
    FROM product_systems
    WHERE user_id = :myid
    ORDER BY `system_name` ASC
    ');
    $sql->bindValue('myid', $myid);
    $sql->execute();
    $result = $sql->fetchAll(); <----- fetch All the data
    return $result;
}