Php 使数组显示所有结果

Php 使数组显示所有结果,php,mysql,Php,Mysql,绝对是新手。我有一个简单的问题: $result = mysql_query("SELECT * FROM evalucion WHERE username = '$empleado'") or die(mysql_error()); $row = mysql_fetch_array( $result ); if ( $row['relacion'] == 'Team') { while ($row = mysql_fetch_array( $result)) {

绝对是新手。我有一个简单的问题:

$result = mysql_query("SELECT * FROM evalucion WHERE username = '$empleado'") or die(mysql_error()); 

$row = mysql_fetch_array( $result );

if ( $row['relacion'] == 'Team') {
    while ($row = mysql_fetch_array( $result)) {
        ...
    }
} 

问题是当我这样做时,数组显示的结果就少了一个。还有其他方法吗?

发生这种情况是因为只有一个值通过
if($row['relacion']='Team')
进行检查,并且当
if
条件失败时,控件将永远不会返回
,而
将从
SELECT
查询中提取剩余数据

要过滤掉所有值,首先需要遍历所有值,然后检查
if
条件

要实现这一点,只需交换现有代码,如下所示:

while($row = mysql_fetch_array( $result ) ) { //fetch value first
   if ( $row['relacion'] == 'Team') { //check condition
      //if condition true
   }
}//while ends

如果您想保持相同的结构(并且如果您有充分的理由这样做),请使用
do-while
而不是简单的
while


您只需修改sql即可避免所有问题:

"SELECT * FROM evalucion WHERE username = '$empleado' AND relacion = 'Team'"
在循环内使用if

 $result = mysql_query("SELECT * FROM evalucion WHERE username = '$empleado'") or die(mysql_error()); 

 while($row = mysql_fetch_array( $result ) ) { if ( $row['relacion'] == 'Team') { 

这取决于您尝试执行的操作,但您可以使用
mysql\u data\u seek()
将数组指针重置回起始位置


你为什么要做两次取回?谢谢,这就成功了。我不敢相信这有多简单。
 $result = mysql_query("SELECT * FROM evalucion WHERE username = '$empleado'") or die(mysql_error()); 

 while($row = mysql_fetch_array( $result ) ) { if ( $row['relacion'] == 'Team') { 
$result = mysql_query("SELECT * FROM evalucion WHERE username = '$empleado'") or die(mysql_error()); 

$new_arr = array();

while($row = mysql_fetch_array( $result ) ) 
{
   if ( $row['relacion'] == 'Team') 
    {
      // do whatever you want;
    }
}
$result = mysql_query("SELECT * FROM evalucion WHERE username = '$empleado'") or die(mysql_error()); 

$row = mysql_fetch_array($result);

// Internal pointer has now been moved on +1 when you
// called mysql_fetch_array() above, so your next loop through
// the $result will start from the second row.
// So reset it to the beginning before the next while loop.
mysql_data_seek($result, 1);

if ($row['relacion'] == 'Team') {
    while($row = mysql_fetch_array($result)) {
        ...