开发者

php array selection

开发者 https://www.devze.com 2023-01-04 14:35 出处:网络
I have the follo开发者_StackOverflow社区wing code and want to manually select an array: <?php $articleQuery = mysql_query(\"SELECT * FROM articles WHERE topic = \'IT\' \");

I have the follo开发者_StackOverflow社区wing code and want to manually select an array:

<?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];

?>

The problem is that its not really selecting/displaying the correct information. What I want is to be able to select the value of the first array.

Thanks in advance.


$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

If you only need the first row, limit the query to one result and execute mysql_fetch_array at most once, instead of in a loop.


Or you can do like this:

 $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.......


if you want $aid to be an array, you should do something like that:

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


The problem is that its not really selecting/displaying the correct information. What I want is to be able to select the value of the first array.

What you want is propably this:

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

You have unnecessary loop. You can also add "limit 1" to sql query. Although I'm not sure I understand your goal correctly.


Using mysql_fetch_assoc, will use the field names as the array indexer, so $article['id'] instead of $article[0]. That way if you change the definition of the table by adding new columns, your code won't break!

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


If you really only want the first result:

$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;

If you want them all, but indexable:

$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];


Why not edit your SQL statement to select only one item?

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

But the error in your code, is that you're looping over all your selected records, overwriting your variables on each pass. If you want to store all the rows as an array, you should modify your syntax like this:

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

...after which you could access the first row with aid[0].

But instead I'd suggest a different structure:

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

What that does, is collect all the data into a single data structure, where each record holds all the data related to the article. You would access it like this:

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

If this looks like hebrew to you, take a look at the PHP manual section for arrays.

0

精彩评论

暂无评论...
验证码 换一张
取 消