これが私の最後の質問になります。
結果として行が取得されず、何が間違っているのかわかりません。また、複数の行を返したいのですが、
mysql のように引数 like を使用できるので、複数の行を返すことができます。ほとんどの検索は正確に記述されていないか、多数あるため、検索に役立つクエリになります。たとえば、著者 john の本を検索したいのですが、john には 5 本の本があり、first_row を使用すると最初の本しか返されず、探している本が 2 番目、3 番目、または 4 番目にある可能性があります。または5行目。
私は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');
}
以前に質問を投稿しましたが、同様のコードを使用して解決しました。名前属性を見逃しただけなので、問題になるとは思わない小さなことが本当に時間を無駄にする可能性があります。今回は何も見逃していなかったらいいのにと思います。お待ち頂きまして、ありがとうございます!