我在这个网站上搜索了答案,但我得到的所有答案都没有用。
MODEL:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Model_product extends CI_Model
{
function __construct()
{
// Initialization of class
parent::__construct();
}
function viewauction()
{
$query = $this->db->select('*')->from('producten')->get();
return $query->result();
}
}
控制器:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Welcome extends CI_Controller
{
function __construct()
{
// Initialization of class
parent::__construct();
}
public function index()
{
$this->load->model('model_product');
$data ['query'] = $this->model_product->viewauction();
$this->load->view('header');
$this->load->view('welcome_message', $data);
$this->load->view('footer');
}
}
查看:
<table class="table">
<thead>
<th>Naam</th>
<th>Beschrijving</th>
<th>Prijs</th>
<th>Vooraad</th>
<th>Categorie</th>
</thead>
<tbody>
<?php foreach($query as $row): ?>
<tr>
<td><?php echo $row->naam; ?></td>
<td><?php echo $row->beschrijving; ?></td>
<td><?php echo $row->prijs; ?></td>
<td><?php echo $row->producten_op_voorraad; ?></td>
<td><?php echo $row->categorie; ?></td>
</tr>
<?php endforeach; ?>
</tbody>
</table>
我得到一个空输出。没有错误 我在表中有1个项目。
确定这是数据库文件:
<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
$active_group = 'default';
$active_record = TRUE;
$db['default']['hostname'] = '127.0.0.1';
$db['default']['username'] = '';
$db['default']['password'] = '';
$db['default']['database'] = 'webshop';
$db['default']['dbdriver'] = 'mysqli';
$db['default']['dbprefix'] = '';
$db['default']['pconnect'] = TRUE;
$db['default']['db_debug'] = FALSE;
$db['default']['cache_on'] = FALSE;
$db['default']['cachedir'] = '';
$db['default']['char_set'] = 'utf8';
$db['default']['dbcollat'] = 'utf8_general_ci';
$db['default']['swap_pre'] = '';
$db['default']['autoinit'] = TRUE;
$db['default']['stricton'] = FALSE;
答案 0 :(得分:1)
它似乎是table name
中的一个类型,确保db
producten
名称的表
并且您的配置缺少$db['default']['username'] = '';
您需要一个用户名,通常它将是{local}上的$db['default']['username'] = 'root';
$query = $this->db->select('*')->from('producten')->get();
你可以使用
获得结果$query = $this->db->get('producten');
答案 1 :(得分:0)
在你的模型中,试试这个:
function viewauction()
{
$query = $this->db->get('producten');
return $query->result();
}
请注意,$this->db->get('tablename')
是Codeogniter Active Records Class中select * from table
查询的标准语法。请检查一下:https://ellislab.com/codeigniter/user-guide/database/active_record.html
此外,您可以在控制器中尝试此操作,以检查所有数据是否来自数组$data['query']
内的查询:
$data ['query'] = $this->model_product->viewauction();
//do the following to check whether you got the data correctly from your query and inside the array.
$echo "<pre>";
print_r();
die();
修改 - 1:
如果我的解决方案不起作用,那么我很确定问题出在您的数据库配置文件中。我提出了一些意见和问题:
'127.0.0.1'
?不是'localhost'
更好的选择吗?root
。我认为你应该设置$db['default']['username'] = 'root';
'webshop'
吗?我非常确定问题出在这里。请检查。
答案 2 :(得分:0)
我会从root用户攻击问题,并且首先激活调试数据库。当你在localhost中时,只有当你在LOCALHOST中时,从codeigniter激活调试数据库:在你的配置dabase.php中更改这一行:
$db['default']['db_debug'] = TRUE;
再次运行,如果存在数据库问题,它就会出现。
如果没有,请检查您遇到问题的地方:
首先:确保您的查询会产生结果:正如@Shaiful Islam指出的那样,首先检查您运行的sql句子,以及是否会返回结果:
function viewauction()
{
$query = $this->db->select('*')->from('producten')->get();
$results = $query->result();
echo $this->db->last_query();
return $results;
}
这将返回您正在运行的SQL,您可以直接运行它并检查您是否从SQL接收结果。
第二:如果您运行SQL并获取数据,请在控制器中打印以检查它们是否正常工作:
public function index()
{
$this->load->model('model_product');
$data ['query'] = $this->model_product->viewauction();
// Check the data:
var_dump( $data['query'] );
$this->load->view('header');
$this->load->view('welcome_message', $data);
$this->load->view('footer');
}
第三次:如果上面进展顺利,最后一件事就是检查视图中的数据:在文件的第一行,写一下:
<?php var_dump($query); ?>
尽管如此,您应该知道错过了哪些数据,并且很容易知道问题出在哪里。