在 CodeIgniter 的视图中传递数据时出错
Error in Passing Data in View in CodeIgniter
我将 SQL 查询结果存储在 $data
变量中,并将其传递给 search_view
,就像我的模型中的这样:
$this->db->like('LOWER(title)', strtolower($query));
$q = $this->db->get('questions');
$data = $q->row_array();
$this->load->view('search_view', array('data' => $data));
我正在尝试使用以下结构在我的视图中显示所有结果:
<?php if ($data['search_type'] == 'question') {
foreach ($data as $question) {
?>
<div class="question-result">
<h2><?php echo $question['title']; ?></h2>
<p>Posted by: <a href="#"><?php echo $question['username']; ?>username</a></p>
<p>Date Posted: <?php echo $question['date']; ?></p>
</div>
<?php } } ?>
其中 $data['search_type'] 是我需要检查的内容,以查看执行了何种类型的搜索,该位已经过测试并且工作正常,无需担心,但是
我使用的所有变量(如用户名、标题和日期)都出现非法字符串偏移错误。
eddit* 示例转储:
array(7) { ["question_id"]=> string(1) "3" ["title"]=> string(19) "First Question Ever" ["content"]=> string(13) "Hello Content" ["date"]=> string(19) "2015-01-03 15:08:30" ["user_id"]=> string(2) "14" ["username"]=> string(4) "Ilya" ["search_type"]=> string(8) "question" }
由于某种原因,返回的问题不超过一个,尽管执行的搜索应该有更多问题。
您不需要使用另一个 foreach,因为它不再位于另一个维度中。使用后 ->row_array()
仅返回一行。
<?php if ($data['search_type'] == 'question') { ?>
<div class="question-result">
<h2><?php echo $data['title']; ?></h2>
<p>Posted by: <a href="#"><?php echo $data['username']; ?>username</a></p>
<p>Date Posted: <?php echo $data['date']; ?></p>
</div>
<?php } ?>
如果您希望获得更多结果,请改用 ->result_array()
:
$data = $q->result_array();
然后在视图中:
<?php foreach ($data as $question): ?>
<?php if ($question['search_type'] == 'question') { ?>
<div class="question-result">
<h2><?php echo $question['title']; ?></h2>
<p>Posted by: <a href="#"><?php echo $question['username']; ?>username</a></p>
<p>Date Posted: <?php echo $question['date']; ?></p>
</div>
<?php endif; ?>
<?php endforeach; ?>
或者也可以只添加 $this->db->where('search_type', 'question')
这样您就不必在上述循环中的 foreach 中放置 if 了。
我将 SQL 查询结果存储在 $data
变量中,并将其传递给 search_view
,就像我的模型中的这样:
$this->db->like('LOWER(title)', strtolower($query));
$q = $this->db->get('questions');
$data = $q->row_array();
$this->load->view('search_view', array('data' => $data));
我正在尝试使用以下结构在我的视图中显示所有结果:
<?php if ($data['search_type'] == 'question') {
foreach ($data as $question) {
?>
<div class="question-result">
<h2><?php echo $question['title']; ?></h2>
<p>Posted by: <a href="#"><?php echo $question['username']; ?>username</a></p>
<p>Date Posted: <?php echo $question['date']; ?></p>
</div>
<?php } } ?>
其中 $data['search_type'] 是我需要检查的内容,以查看执行了何种类型的搜索,该位已经过测试并且工作正常,无需担心,但是
我使用的所有变量(如用户名、标题和日期)都出现非法字符串偏移错误。
eddit* 示例转储:
array(7) { ["question_id"]=> string(1) "3" ["title"]=> string(19) "First Question Ever" ["content"]=> string(13) "Hello Content" ["date"]=> string(19) "2015-01-03 15:08:30" ["user_id"]=> string(2) "14" ["username"]=> string(4) "Ilya" ["search_type"]=> string(8) "question" }
由于某种原因,返回的问题不超过一个,尽管执行的搜索应该有更多问题。
您不需要使用另一个 foreach,因为它不再位于另一个维度中。使用后 ->row_array()
仅返回一行。
<?php if ($data['search_type'] == 'question') { ?>
<div class="question-result">
<h2><?php echo $data['title']; ?></h2>
<p>Posted by: <a href="#"><?php echo $data['username']; ?>username</a></p>
<p>Date Posted: <?php echo $data['date']; ?></p>
</div>
<?php } ?>
如果您希望获得更多结果,请改用 ->result_array()
:
$data = $q->result_array();
然后在视图中:
<?php foreach ($data as $question): ?>
<?php if ($question['search_type'] == 'question') { ?>
<div class="question-result">
<h2><?php echo $question['title']; ?></h2>
<p>Posted by: <a href="#"><?php echo $question['username']; ?>username</a></p>
<p>Date Posted: <?php echo $question['date']; ?></p>
</div>
<?php endif; ?>
<?php endforeach; ?>
或者也可以只添加 $this->db->where('search_type', 'question')
这样您就不必在上述循环中的 foreach 中放置 if 了。