在php mysql中回显while语句外的多个字段

时间:2016-04-04 13:43:53

标签: php mysql

很抱歉,因为我是初学者,所以看起来很傻。

我正在比较id和显示数据。

预期输出

  

Name1 Name2 Name3

代码。

$cout = mysql_query("SELECT * FROM student where parent_id='$update_id' ",$link);
while($cput = mysql_fetch_array($cout)){
  echo $cput['s_name'];   
}

但是,我希望在echo之外while loop,所以我尝试了以下内容,但它仅输出最后一个值,即Name3

$cout = mysql_query("SELECT * FROM student where parent_id='$update_id' ",$link);
while($cput = mysql_fetch_array($cout)){
  $sname = $cput['s_name'];
}
echo $sname;

我可以理解loop将在while循环之后终止,因此它不会执行所需的操作。但是,我认为可能有一个解决方法。任何人都可以帮助我。

2 个答案:

答案 0 :(得分:3)

使用连接变量工作时,请注意最终将输出的尾随空间。或者想象你想用逗号分隔名字。上述代码 - 用逗号 - 输出:

$cout = mysql_query("SELECT * FROM student where parent_id='$update_id' ",$link);
$sname = '';
while($cput = mysql_fetch_array($cout)){
    $sname .= $cput['s_name'] . ', ';
}
echo $sname; // Name1, Name2, Name3, // note trailing (unwanted) comma with *space*

另一种方法是捕获数组中的输出。这将允许你然后implode()无论你喜欢哪个分界符。请考虑以下事项:

$cout = mysql_query("SELECT * FROM student where parent_id='$update_id' ",$link);
$sname = [];
while($cput = mysql_fetch_array($cout)){
    $sname[] = $cput['s_name'];
}
echo implode(' ', $sname); // Name1 Name2 Name3
echo implode(', ', $sname); // Name1, Name2, Name3
echo implode('<br/>', $sname); // Name1<br/>Name2<br/>Name3
// etc.

<强>更新

$cout = mysql_query("SELECT * FROM student where parent_id='$update_id' ",$link);
echo '<select name="mySelectBox">';
while($cput = mysql_fetch_array($cout)){
    echo '<option value="Some Value">' . $cput['s_name'] . '</option>';
}
echo '</select>';

答案 1 :(得分:2)

定义一个变量以保持名称与空格分开($ sname)然后在每次迭代中连接s_name值,如$ sname。= $ cput ['s_name']。 '';

所以你的代码就像......

$cout = mysql_query("SELECT * FROM student where parent_id='$update_id' ",$link);
$sname = '';
while($cput = mysql_fetch_array($cout)){
    $sname .= $cput['s_name'] . ' ';
}
echo $sname;