2013-08-06 54 views
0

這將是我最後一個問題。獲取數組結果和行操作

我越來越沒有行作爲一個結果,我不知道什麼即時做錯了,再加上我想返回多行,

像MySQL的,我可以只使用一個參數,像這樣我就可以返回多行這對搜索很有幫助,因爲大多數搜索都沒有準確的書寫或很多。例如,我想從作者約翰那裏搜索一本書,但約翰有5本書,如果我使用first_row,它只會返回第一本書,並且可能有一個機會,即尋找的將在第二或第三或第四或第五排。

我是新來的ci,閱讀指南,其中我可以使用num_rows(),但我不知道如何使用它,但作爲未見過的例子。我找到了,但令我失望的是,我找不到滿足我需求的東西。

這裏是我的html:

<?php echo form_open('bookstore/booksearch'); ?> 
           <table> 
            <tr> 
             <td> 
            <label for="searchid">Search:</label> 
             </td> 
             <td> 
            <input type="text" size="15" name="searchval" /> 
             </td> 
            </tr> 
            <tr> 
             <td> 
            <label for="searchtype">Type:</label> 
             </td> 
             <td> 
            <select name="searchtype"> 
             <option value="book_id">Id</option> 
             <option value="book_author">Author</option> 
             <option value="book_name">Title</option> 
            </select> 
             </td> 
            </tr> 
            <tr> 
            <input type="submit" name="submit" value="Search" /> 
            </tr> 
           </table> 
           <?php echo form_close(); ?> 

          </ul> 
         </div> 
         <div> 

<table cellpadding='5'> 
<th>Book ID</th> 
<th>Title</th> 
<th>Author</th> 
<th>Released Year</th> 
<th>ISBN</th> 

<?php 
if(isset($books)) : foreach($books as $book) : 
?>  
     <tr> 
     <td><?php echo $book['book_id'] ?></td> 
     <td><?php echo $book['book_name'] ?></td> 
     <td><?php echo $book['book_author'] ?></td> 
     <td><?php echo $book['book_year'] ?></td> 
     <td><?php echo $book['book_isbn'] ?></td> 
     </tr> 
<?php 
    endforeach; 
?> 

<?php 
else : 
?> 
<h5>No records</h5> 
<?php 
endif; 
?> 
</table> 

控制器:

public function booksearch() 
    { 
    if($_POST['submit']) 
     { 
     $col= $this->input->post('searchtype'); 
     $val= $this->input->post('searchval'); 

     $data['book'] = $this->books_model->showbook($col,$val); 

     } 
     $this->load->view('showbooks',$data); 
    } 

和我的模型:

public function showbook($col, $searchid) 
{ 
     $this->db->select()->from('books')->where(array($col=>$searchid)); 
     $query=$this->db->get(); 
     return $query->first_row('array'); 
} 

我已經發布了一個問題早,但類似的代碼,我解決了它因爲我只錯過了名字屬性,所以你不認爲是問題的小事可能會浪費你的時間。我希望這次我沒有錯過任何東西,如果它發生了兩次,我會感到羞恥。謝謝你的耐心!

+0

請參照您在以前的帖子給我的答案是:http://stackoverflow.com/a/18082800/989234 – Mudshark

+0

FYI:您可以ommit'select()',請看http://net.tutsplus.com/sessions/codeigniter-from-scratch/ :) – Kyslik

回答

1

替換:

public function showbook($col, $searchid) 
{ 
    $this->db->select()->from('books')->where(array($col=>$searchid)); 
    $query=$this->db->get(); 
    return $query->first_row('array'); 
} 

要:

public function showbook($col, $searchid) 
{ 
    $this->db->select()->from('books')->where(array($col=>$searchid)); 
    $query=$this->db->get(); 
    return $query->result_array(); 
} 
+0

那麼它會返回所有結果嗎? 謝謝。 –

+0

@ user1891608 yes它將所有結果作爲滿足條件的數組返回。 –