这是我现在的代码,它将Hassum Harrod配置文件作为JSON返回,这是完美的。我需要做的是将我的参数传递给查询字符串而不是名称,这样当url传递一个名字时,查询会从数据库中返回该人的个人资料。当我将名称Hassum Harrod更改为变量$ name时,我收到以下错误:
未知专栏' Hassum'在' where子句' SELECT name,short_name,reknown,bio FROM profile WHERE name = Hassum%20Harrod
这是我现在的代码:
控制器
public function getPerson($name) {
// loads the DBModel.php
$this->load->model('DBModel');
$query = $this->db->query("SELECT name, short_name, reknown, bio FROM profile WHERE name = 'Hassum Harrod'");
$data['profile'] = $query->row();
$this->load->view('profileView', $data);
}
查看
echo json_encode($profile);
答案 0 :(得分:1)
请阅读:http://www.codeigniter.com/user_guide/general/models.html
http://www.codeigniter.com/user_guide/database/query_builder.html
试试这种方式
将此方法添加到您的模型中应该是这样的
// in your model
public function getNames($name) {
$data = array();
$this->db->select(*);
$this->db->like('name', $name);
$query = $this->get('profile');
if ($query->num_rows() > 0) {
foreach ($query->result_array() as $row) {
$data[] = $row;
}
}
return $data;
}
你的控制器应该是这样的
public function getPerson($name) {
$this->load->model('DBModel');
$data = $this->DBModel->getNames($name);
// you can encode in json here
$data['profile'] = json_encode($data);
$this->load->view('profileView', $data);
}
http://www.codeigniter.com/user_guide/general/controllers.html
在视图中:
echo $profile;
答案 1 :(得分:0)
您在查询中使用LIKE
关键字,因此我们可以假设从DB返回的结果不止一个。在这种情况下,您需要$query->result()
。其次,即使只有一个返回的行,这段代码:
$data['profile'] = $query->row() > 0;// assigning variable to condition (TRUE|FALSE)
将返回布尔值,但不返回结果本身。
这是简化代码,您可以查看:
<?php
$a = ['a', 'b', 'c'];
var_dump($b = $a > 0);// TRUE
随意开始使用文档中的基本示例。它可以帮助你维护代码:
$query = $this->db->query("YOUR QUERY");
$row = $query->row();
if (isset($row))
{
echo $row->title;
echo $row->name;
echo $row->body;
}
同样,如果您只期望来自DB的一行,则可以尝试使用此代码。但是,如果您不确定是否存在多个可能的行,则必须使用代码进行检索:
$query = $this->db->query("YOUR QUERY");
foreach ($query->result() as $row)
{
echo $row->title;
echo $row->name;
echo $row->body;
}
当您将此设置为全部工作时,您可以将对象或数组转换为JSON字符串。
它将遵循语法:
$json = json_encode($row);
如果返回多行,则最容易从DB返回result_array()或row_array(),因为数组很容易转换为JSON,尽管有suitable solutions。 毕竟,根本不使用在方法开头加载的模型。