2016-07-25 3 views
0

私はアイテムのリストを要求するMySQLクエリを持っています。PHP:すべての項目をループするのではなく、最初の項目を繰り返すループですか?

私はそれらを取得し、すべての項目をforループ、で表示したいのですが、すべての項目ではなく最初の項目だけを表示します。

なぜですか?

<?php 

$conectar = mysqli_connect(HOST, USER, PASS, DATABASE); 
$query = " SELECT cursoID, nombreCurso, estadoCurso 
      FROM cursos 
      WHERE estadoCurso='abierto'"; 
$buscarCurso = mysqli_query($conectar,$query); 
$curso=mysqli_fetch_assoc($buscarCurso); 
$totalRows = mysqli_num_rows($buscarCurso); //There are 3 rows of results 

echo $totalRows; 

for ($i=0; $i < $totalRows; $i++) { 
    echo '<br>'; 
    echo $curso['nombreCurso']; 
    echo '<br>'; 
} 
?> 

意図した結果は次のとおりです。

Curso 1

Curso 2

Curso 3

、代わりに私が手

Curso 1

Curso 1

Curso 1

+0

追加print_r($ curso); 'for'ループの前に$ curso ['nombreCurso']フィールドに何があるのか​​を最初に確認しますか? –

+4

PHPのマニュアルに記載されているようにしないのはなぜですか?あなたがそれをすると、それは間違っています。あなたは結果セットで前進しません。 – trincot

+0

関連付けられた配列をフェッチしています。これは、1つの行を返します。 'for'の代わりに 'while($ row = mysqli_fetch_assoc($ buscarCurso)){... echo stuff ...}'行数を取得する必要はありません –

答えて

7

あなたのループが反復ごとに結果セットからフェッチする必要があります。 (PHP documentationに与えられた多くの例のように)標準的な方法は、あなたがwhile状態でこれを行うことです。

$totalRows = mysqli_num_rows($buscarCurso); //There are 3 rows of results 
echo $totalRows; 
while ($curso=mysqli_fetch_assoc($buscarCurso)) { 
    echo '<br>'; 
    echo $curso['nombreCurso']; 
    echo '<br>'; 
} 
+0

ありがとう!できます!しかし、それはループ2回、私は1つの時間が完了するのにかかるより少ないことを意味するようです。 – Rosamunda

+0

ループ外でmysqli_feth_assocを呼び出す元の行を削除する必要があります。 – trincot

+0

私は、ありがとう! – Rosamunda

0

あなたは、クエリ結果のループを必要とします。この場合、1つの結果しか得られず、その結果を3回ループします。

<?php 
while($curso = mysqli_fetch_assoc($buscarCurso)) { 

    // Do some stuff 
    echo '<br />' . $curso['nombreCurso'] . '<br />'; 
} 
?> 
0

まず使用このコードをチェック

<?php 

$conn = mysqli_connect(HOST, USER, PASS, DATABASE); 


$select_cursos = $conn->prepare(" SELECT 
    cursoID, nombreCurso, estadoCurso 
    FROM cursos 
    WHERE estadoCurso = ? ORDER BY nombreCurso ASC 
"); 

$select_cursos->bind_param('s', $nombreCurso); 

$nombreCurso = 'abierto'; // This you can get from a $_POST too 

if (!$select_cursos->execute()) { // ERROR 

    echo('Error'); 

} else { // OK 
    $select_cursos_result = $select_cursos->get_result(); 
    $select_cursos_count = select_cursos_result->num_rows; 

    echo('Found: '.$select_cursos_count); 

    if ($select_cursos_count > 0) { 
     while ($data = $select_cursos_result->fetch_assoc()) { 
      echo ($data['nombreCurso'].'<br>'); 
     } 
    } else { 
     echo ('No data!!'); 
    } 
} 

?> 

乾杯よりもブロックSQLインジェクションについてステートメントを準備!

+0

人々が好きではない完全な答え!! :D –

関連する問題