2016-06-25 5 views
0

私は初めてPDOを手に入れようとしています。問題は、私はPDOクエリを実行している時はいつでも私は私のブラウザPDOクエリで空白が返されます。

コード、

問題が発生
<?php 

$config['db'] = array(

    'host'  => 'localhost', 
    'username' => 'root', 
    'password' => '', 
    'dbname' => 'website' 

); 

$db = new PDO('mysql:host=' .$config['db']['host']. ';dbname=' .$config['db']['dbname'], $config['db']['username'], $config['db']['password']); 

//$query returns PDO statment object 
$query = $db->query('SELECT `articles`.`title` FROM `articles`'); 

print_r($query); 

//we will use different methods on PDO to work with database 

//a generic method to display all results 
while($rows = $query->fetch(PDO::FETCH_ASSOC)){ 
    echo '<br>'.$rows['title']; 
} 

$rows1 = $query->fetch(PDO::FETCH_ASSOC); 
print_r($rows1); 

$rows2 = $query->fetchAll(PDO::FETCH_ASSOC); 
echo '<pre>', print_r($rows2, true), '</pre>'; 

$rows3 = $query->fetchAll(PDO::FETCH_NUM); 
echo '<pre>',print_r($rows3, true),'</pre>'; 

$articles = $query->fetchAll(PDO::FETCH_ASSOC); 
echo $articles[4]['title']; 
?> 

ながら、印刷や変数の値をエコー$ rows1、$ rows2 & $ rows3に空白の配列を取得しています。

私は事前にフォーマットされた配列を取得する必要がありますが、おかげで...

+0

これらの結果セットオブジェクトをすでに使用しているため、これらは機能しません。 –

+1

whileループでデータをフェッチしたため、fetchAllが空です。あなたは別のアプローチが必要です。最初にfetchAllを使用して変数にデータを保存し、ループ内でこの変数を使用してください。 – instead

答えて

3

fetch方法は、リターンにカーソルのようなものを使用し、私はあなたの入力の友人を知ってみましょうIssue

を示すように、私が得るすべては、空白の配列です結果。あなたはそれ以下のコードに来たときに上記ループは、結果セットのカーソルがすでにあるときは、結果セットの最初から最後まで模索しているので

while($rows = $query->fetch(PDO::FETCH_ASSOC)){ 
    echo '<br>'.$rows['title']; 
} 

の内側(最初から最後までカーソルを移動)最後に。したがって、空の配列が結果として得られます。

すべての結果を最初に取得する必要があります。

$rows = $query->fetchAll(PDO::FETCH_ASSOC); 

結果を必要に応じてループします。

foreach($row in $rows){ 
    // do something 
} 

//again access results below 
echo '<pre>', print_r($rows, true), '</pre>'; 

したがって、カーソルを使用する性質のため、クエリオブジェクトを使用しないことが考えられます。結果を取得してから使用してください。

+0

説明が優れています。 +10 –

+0

URの入力のおかげで、ありがとう、フェッチがどうにかリセットされる方法がありますか? – Gaurav

+0

http://stackoverflow.com/questions/15111681/reset-cursor-position-in-pdo http://stackoverflow.com/questions/9437214/resetting-array-pointer-in-pdo-results 私は恐れる。リンクは、カーソルをリセットするいくつかの質問です –

関連する問題