php数组选择

时间:2010-06-22 18:07:19

标签: php arrays

我有以下代码,想要手动选择一个数组:

<?php

 $articleQuery = mysql_query("SELECT * FROM articles WHERE topic = 'IT' ");


 while($article= mysql_fetch_array($articleQuery )){
  $aid = $article['id'];
  $media = $article['media'];
  $link = $article['link'];
 }


 echo $aid[0];

?>

问题在于它并没有真正选择/显示正确的信息。我想要的是能够选择第一个数组的值。

提前致谢。

7 个答案:

答案 0 :(得分:1)

$firstrow = null;
while($article= mysql_fetch_array($articleQuery)) {
    if ($firstrow === null)
        $firstrow = $article;

    $aid = $article['id'];
    $media = $article['media'];
    $link = $article['link'];
    //manipulate $aid, $media and $link.
}

//manipulate $firstrow

如果您只需要第一行,请将查询限制为一个结果并最多执行一次mysql_fetch_array,而不是循环。

答案 1 :(得分:1)

或者你可以这样做:

 $array = array();
 while($article = mysql_fetch_object($articleQuery )){
  $array[] = $article;
 }

echo $array[0]->id; // get first id
echo $array[0]->media; // get first media
echo $array[0]->link; // get first link

echo $array[1]->id; // get second id
echo $array[1]->media; // get second media
echo $array[1]->link; // get second link
// and so on.......

答案 2 :(得分:0)

如果你想让$ aid成为一个数组,你应该这样做:

$aid = array();
while($article= mysql_fetch_array($articleQuery )){
    $aid[] = $article['id'];
}

答案 3 :(得分:0)

  

问题是它不是真的   选择/显示正确的   信息。我想要的是能够   选择第一个的值   阵列

你想要的是这个:

$articleQuery = mysql_query("SELECT * FROM articles WHERE topic = 'IT' ");
$article= mysql_fetch_array($articleQuery);
echo $article[0];

你有不必要的循环。您还可以向sql查询添加“limit 1”。虽然我不确定我是否正确理解你的目标。

答案 4 :(得分:0)

使用mysql_fetch_assoc,将使用字段名称作为数组索引器,因此$ article ['id']而不是$ article [0]。这样,如果通过添加新列来更改表的定义,则代码不会中断!

$articleQuery = mysql_query("SELECT * FROM articles WHERE topic = 'IT' LIMIT 1");
$article= mysql_fetch_assoc($articleQuery);
var_dump($article);

答案 5 :(得分:0)

如果你真的只想要第一个结果:

$articleQuery = mysql_query("SELECT * FROM articles WHERE topic = 'IT' LIMIT 1"); // note LIMIT clause
if( false !== ($article = mysql_fetch_array($articleQuery )))
{
    $aid   = $article['id'];
    $media = $article['media'];
    $link  = $article['link'];
}
echo $aid;

如果你想要所有这些,但可以索引:

$articleQuery = mysql_query("SELECT * FROM articles WHERE topic = 'IT' ");
while($article= mysql_fetch_array($articleQuery ))
{
    $aid[]   = $article['id'];
    $media[] = $article['media'];
    $link[]  = $article['link'];
}
echo $aid[0];

答案 6 :(得分:0)

为什么不编辑SQL语句以仅选择一个项目?

mysql_query("SELECT * FROM articles WHERE topic = 'IT' LIMIT 1");

但代码中的错误是,您循环遍历所有选定的记录,在每次传递时覆盖变量。如果要将所有行存储为数组,则应修改语法如下:

while($article= mysql_fetch_array($articleQuery )){
  $aid[] = $article['id'];
  $media[] = $article['media'];
  $link[] = $article['link'];
}

...之后您可以使用aid[0]访问第一行。

但我建议采用不同的结构:

while($article= mysql_fetch_array($articleQuery )){
  $articles[]['aid'] = $article['id'];
  $articles[]['media'] = $article['media'];
  $articles[]['link'] = $article['link'];
}

这样做是将所有数据收集到单个数据结构中,其中每个记录包含与文章相关的所有数据。您可以这样访问它:

echo $articles[0]['aid']; 
echo $articles[0]['media'];
echo $articles[0]['link'];

如果这看起来像是希伯来,请查看PHP manual section for arrays