2012-05-08 12 views
2

昨日、別のユーザがMySQLクエリを処理するための汎用関数の構築を手伝ってくれました。検索方法1カスタムMySQLフェッチ機能からの結果

function fetchAll($query) { 
    $res = mysql_query($query) or trigger_error("db: ".mysql_error()." in ".$query); 
    $a = array(); 
    if ($res) { 
    while($row = mysql_fetch_assoc($res)) { 
     $a[]=$row; 
    } 
    } 
    return $a; 
} 

を出力するように、私は単純に次の操作を行い、返された結果:

$data = fetchAll("SELECT * FROM news_table ORDER BY id LIMIT 10"); 

foreach ($data as $row) { 
    echo $row['title']; 
} 

私の質問は一つだけ、結果が配列にあります時に結果を出力に関し、それはこのようになります。ページの現在のブログ投稿を表示するときのように。私はforeachループを最初に呼び出さなくてもそれができるかどうかを知りたいですか?私はそれをループする必要はありませんので、配列から最初の結果を出力する方法はありますか?

おそらく私は上記のfetchAll()とは対照的に、代わりの機能を持つことができますか? 1行だけを出力するもの?

乾杯、

スコット

+1

fetchOne()を作成するだけです。 – Corbin

+0

質問を1で制限してみませんか? –

+0

ダイレクトクエリを使用しないでください。それらを構築する。それ以外の場合は安全ではありません。 – opengrid

答えて

2

を数えます。たとえば:

echo $data[0]['title']; 

は、基本的にはあなたの$データは、2次元配列を使用すると、その番号を知っていれば、あなたが直接行のいずれかにアクセスできるように、第1の寸法は、行番号を(カウントは0から始まる)であることと、です。 1行しかない場合は、必ず0になります。

+1

ラブリーありがとう!意味をなさないちょうどエコー$ data ['title']と同じくらい美しいものではありません。しかし、それはやります - そして、私が使用しているこの関数の利点は、コードの行がずっと少ないことを意味します。だから、それはそれに値する。 –

2

ちょうどはい、アレイ

if(count($data) == 1) { 
    // Only one dataset 
} else if(count($data) > 0) { 
    // foreach 
} else { 
    // no content 
} 
+0

count($ data)=== 0の場合foreachは失敗します。 – opengrid

+0

@opengrid回答が更新されました。 – Ahatius

1
echo $data[0]['title']; 

あなたの探しているものを正確に印刷する必要があります。 2D配列では、最初の次元は配列インデックスで、配列インデックスが0から始まるとき、上記のコードはその配列の最初の行をエコーし​​ます。

+0

ダレンに感謝します。あなたと上のポスターが同意したように見えます。万一、1行だけを取得しようとすると、より良い関数が使用できますか? –

+0

最も美的に魅力的ではありませんが、あなたが受け入れた答えは最高です。 –

関連する問題