2014-04-19 16 views
0

我有這樣的代碼在我的課:在瀏覽器查詢結果給出了超過它應該

<select> 
    <?php 
     $datos = $db->get_data(); 
     for($i=0;$i<sizeof($datos);$i++) 
     { 
      ?> 
       <option value="<?php echo $datos[$i]["id_especialidad"]?>"><?php echo $datos[$i]["descripcion"]?></option> 
      <?php 
     } 
    ?> 
</select> 

現在:

public function get_data(){ 
     $sql = "select id_especialidad, descripcion from especialidad"; 
     foreach($this->dbh->query($sql) as $row) 
     { 
       $this->rows[] = $row; 
     } 
     return $this->rows; 
} 

現在我用它從HTML文件中像這樣我看到與行的選擇,但在第一行說:「注意:未定義的索引:descripcion in(file_path)」

我在我的表中有9行bu t當我把這個「打印sizeof($ datos)」它顯示11行。

發生了什麼事?

是否有另一種顯示此數據的方法?

謝謝!

+0

你檢查過陣列嗎? 'print_r($ datos)'查看它包含的內容。 –

+1

用一個'foreach'循環減少一些混淆。 PHP中很少需要增量式for($ i = 0; $ i

+0

我們可以在數據庫類中看到你的'query'函數嗎?也許它是作爲'fetch_row'獲取你的結果,而你試圖將它作爲'fetch_assoc'或'fetch_array'來使用 – CodeBird

回答

0

因爲我不知道在哪裏,你是如何使用或重新使用$this->rows[]因爲你還沒有公佈這件事,我會改一下你的代碼:

public function get_data() 
{ 
    $sql = "SELECT id_especialidad, 
        descripcion 
       FROM especialidad"; 
    $result = array(); 
    foreach($this->dbh->query($sql) as $row) 
    { 
     $result = $row; 
    } 
    return $result; 
} 

鑑於$this->dbh->queryPDO query,如果你print_r你從get_data得到的結果應該給你類似的東西:

Array(
    [0]=>Array([id_especialidad]=>1 
          [0]=>1 
        [descripcion]=>test 
          [1]=>test 
      ) 
    [1]=>Array([id_especialidad]=>2 
          [0]=>2 
        [descripcion]=>test2 
          [1]=>test2 
      ) 
    ) 

而且你可以輕鬆地閱讀它是這樣的:

<select> 
<?php 
$data = $db->get_data(); 
foreach ($data as $item) 
{ 
?> 
    <option value="<?php echo $item["id_especialidad"]; ?>"><?php echo $item["descripcion"]; ?></option> 
<?php 
} 
?> 
</select> 

如果您收到超過9個結果,它應該已經只有9我只能認爲有可能是一個問題$this->rows[]沒有被清除後,用什麼一樣。

+0

非常感謝!你是對的!!它是數組$ this-> rows []。我在每個查詢中都使用它,但在使用它之前忘了初始化它。你是最好的! – user3552695