MYSQL - 从提取的数组中选择特定值

时间:2011-10-19 12:20:28

标签: php mysql arrays

我有一个小问题,因为我对所有这些东西都很陌生,我在谷歌搜索时没有成功,因为我不知道我正在寻找的确切定义。

我有一个非常简单的数据库,我得到了所有行:

while($row = mysql_fetch_array($result)){
    echo $row['id']. " - ". $row['name'];
    echo "<br />";
}

现在,我的问题是:如何过滤第二个结果?我认为这样的事情可行,但它不会:

$name2= $row['name'][2];

甚至可能吗?或者我是否必须编写另一个mysql查询(类似SELECT .. WHERE id = "2")以获取第二行中的名称值?

我想要的是:

- 从数据库中获取所有数据(使用“while循环”),但不要在我的页面上单独显示某些结果。例如echo("name in second row")echo("id of first row")等等。

9 个答案:

答案 0 :(得分:12)

如果您希望使用完整的结果集而不是只遍历它们一次,则可以将整个结果集放到数组中:

$row = array();

while( $row[] = mysql_fetch_array( $result ) );

现在您可以使用第一个索引访问单个记录,例如第二行的名称字段位于$row[ 2 ][ 'name' ]

答案 1 :(得分:2)

$result = mysql_query("SELECT * FROM ... WHERE 1=1");
while($row = mysql_fetch_array($result)){
/*This will loop arround all the Table*/
    if($row['id'] == 2){
    /*You can filtere here*/
    }

    echo $row['id']. " - ". $row['name'];
    echo "<br />";
}

答案 2 :(得分:0)

$counter = 0;
while($row = mysql_fetch_array($result)){
    $counter++;

    if($counter == 2){
        echo $row['id']. " - ". $row['name'];
        echo "<br />";
    }
}

答案 3 :(得分:0)

是的,理想情况下,您必须编写另一个SQL查询来过滤结果。如果你有:

SELECT * FROM Employes

然后你可以用:

过滤它
SELECT * FROM Employes WHERE Name="Paul";

如果你想要每个以P开头的名字,你可以用:

来实现
SELECT * FROM Employes WHERE Name LIKE "P%";

使用sql查询过滤数据的主要原因是MySQL / MSSQL / Oracle / etc等数据库管理器系统经过高度优化,并且比PHP中的服务器端条件块更快。

答案 4 :(得分:0)

这个While循环会自动从数据库中获取所有记录。如果你想获得任何其他字段,那么你只需要使用它。

答案 5 :(得分:0)

取决于你想做什么。 mysql_fetch_array()获取资源指针现在指向的当前行。这意味着您根本没有$row['name'][2];。在while循环的每次迭代中,您拥有$ row数组中查询的所有列,您不会立即从数组中的查询中获取所有行。如果只需要这一行,那么是 - 在查询中添加WHERE子句,如果不需要,则不检索其他行。如果你需要所有行,但是当你得到第二行时你想做一些特别的事情,那么你必须添加一个计数器来检查你当前正在使用哪一行。即:

$count = 0;
while($row = mysql_fetch_array($result)){
    if(++$count == 2)
    {
        //do stuff
    }
}

答案 6 :(得分:0)

如果您希望能够在一个循环中使用2个连续结果,则可以存储第一个循环的结果,然后循环。

$initial = true;
$storedId = '';

while($row = mysql_fetch_array($result)) {

  $storedId = $row['id'];

  if($initial) {

    $initial = false;
    continue;
  }

  echo $storedId . $row['name'];
}

这只适用于连续的事情。请原谅语法错误,我已经用PHP编程了很长时间......

答案 7 :(得分:0)

如果您总是想要第二行,无论您在数据库中有多少行,都应该修改您的查询:

SELECT * FROM theTable LIMIT 1, 1;

请参阅:http://dev.mysql.com/doc/refman/5.5/en/select.html

答案 8 :(得分:0)

我使用了答案中的代码并略微修改了它。以为我会分享。

$result = mysql_query( "SELECT name FROM category;", db_connect() );
$myrow = array();
while ($myrow[]  = mysql_fetch_array( $result, MYSQLI_ASSOC )) {}
$num = mysql_num_rows($result);

使用示例

echo "You're viewing " . $myrow[$view_cat]['name'] . "from a total of " . $num;